大話設計模式之外觀模式

? ? ? ? 年年作品展,歲歲不相同,鵝黃新綠漣漪泛起思想的火花卻不盡相同。十期的作品展,從13年3月20號開始到完美落幕,時至今日,她已經在我的記憶中成為過去。這朵小小的浪花激起的漣漪漸漸褪去,或許已沒有或許,但那抹如琉璃般的記憶也在這片平靜中漸漸凝成永恒。當再次凝眸十一期的那群孩子,笑意淺淺,心事微瀾。

今天是十一期作品展的日子,看到她們多像去年的我。揣測激情與夢想來到這淡紫色蒲公英飛舞的土地。昨天晚上抽出時間去看了看十一期的作品展彩排,彩排的過程中,有五彩的燈光。有展示作品的大屏幕,投影儀,還有音響,在整個作品展示的過程中,十一期孩子的后勤人員中,有人負責關閉燈光和打開燈光。有人負責打開和關閉投影儀,一個個作品的銜接須要打開和關閉大屏幕,有的作品是音樂類的軟件。這個時候就要控制音量,打開和關閉音響,咦?這一連串的流程怎么會如此熟悉,猛然間,恍惚。這個儼然就是我們大話設計中的外觀模式啊。

? ? ? ? ?外觀模式,為子系統中的一組接口提供一個一致的界面,此模式定義了一個高層接口,這個接口使得這一子系統更加easy使用。首先我們來看一下我們外觀模式的結構圖:

? ? ? ??

? ? ? ?依舊以我們的上述十一期作品展為例,來看看我們的類圖:

? ? ? ?

? ? ? ?畫好了類圖。來看看我們代碼是怎樣實現的呢?我們先來看看燈光。投影儀。大屏幕。音響的代碼:

? ? ? ??

using System;
namespace Facade 
{ /// <summary> // 投影儀 public class Projector { public void OpenProjector() { Console.WriteLine("打開投影儀"); }public void CloseProjector() { Console.WriteLine("關閉投影儀"); }}//燈光public class Light { public void OpenLight() { Console.WriteLine("打開燈光"); }public void CloseLight() { Console.WriteLine("關閉燈光"); } } //屏幕public class Screen { public void OpenScreen() { Console.WriteLine("打開屏幕"); }public void CloseScreen() { Console.WriteLine("關閉屏幕"); } } //音響public class  Acoustics  { public void Acoustics  () { Console.WriteLine("打開音響"); }public void CloseAcoustics  () { Console.WriteLine("關閉音響"); } } 
}
? ? ? ? ?外觀類中的代碼:

   public class ProductionFacade { /// 在外觀類中必須保存有子系統中各個對象 private Projector projector; private Light  light; private Screen screen; private Acoustics   acoustics; public ProductionFacade() { projector = new Projector(); light = new Light(); screen = new Screen(); acoustics=new Acoustics();}/// <summary> /// 作品開始/// <summary> public void OpenProduction() { //先打開燈光light.OpenLight(); //打開投影projector.OpenProjector(); //再打開屏幕 screen.OpenScreen(); //再打開音響acoustics.OpenAcoustics(); }/// <summary> /// 作品結束/// </summary> public void CloseProduction() { //關閉燈光light.CloseLight(); //關閉投影projector.CloseProjector(); //關閉屏幕 screen.CloseScreen(); //關閉音響acoustics.CloseAcoustics(); }} 
}
? ? ? ? ?client的代碼:

 static void Main(string[] args) { Facade.ProductionFacade movie = new Facade.ProductionFacade(); Facade.Projector projector = new Facade.Projector();//首先是觀看作品 movie.OpenProduction();Console.WriteLine();//最后就是關閉作品了 movie.CloseProduction();Console.ReadKey(); } 
? ? ? ?簡單的說,就是外觀模式將一個或者多個類的復雜的操作進行了隱藏。只顯示一個一致的界面供client使用。須要注意的是。外觀模式不過給我們提供了更為直接和easy地操作方式,她并沒有把原來的子系統進行隔離。所以,假設你還須要子系統類的更高層的功能,還是能夠使用原來的子系統,這個是外觀模式的一大長處,通過外觀模式能夠將子系統的接口上建立一個高層接口,而且將這個高層接口提供給client使用,這樣便開業解除掉client和復雜子系統之間的耦合。

? ? ? ? ?十一期的作品展今天晚上在學府拉開序幕。祝福你們。愿這朵小小的浪花在IT的海洋里激起驚濤駭浪,我的大話設計依舊在繼續........

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258338.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258338.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258338.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

rdp協議打開 windows_CVE-2019-1182 windows 遠程桌面RDP協議漏洞修復

原標題&#xff1a;CVE-2019-1182 windows 遠程桌面RDP協議漏洞修復2019年8月14日&#xff0c;微軟發布更新了windows的系統補丁&#xff0c;代號&#xff1a;CVE-2019-1181&#xff0c;CVE-2019-1182補丁針對與windows遠程桌面遠程代碼執行漏洞進行了全面的修復&#xff0c;根…

HK算法原理及MATLAB實現

HK算法原理及MATLAB實現 一、編程原理 說明&#xff1a; 1、綠色框圖中&#xff0c;當alpha取為最優權向量時&#xff0c;會使 取為最小值。arg的意思是當后面那個函數滿足時&#xff0c;取出它的自變量的值。 2、注意后面那個式子是對b求偏導 3、e(t)大于0時&#xff0c;下…

軟件工程的實踐項目的自我目標

對實踐項目完成后學習到的能力的預期 1.要學會java的相關知識&#xff0c;并能利用java做一個項目&#xff0c;能知道做一個項目的基本流程。可以先是一個小項目&#xff0c;之后再根據自身情況進行嘗試。 2.學會團隊協作&#xff0c;之前的數據庫實踐大多是一個人完成的&#…

《數據驅動安全:數據安全分析、可視化和儀表盤》一1.2.4 統計學

本節書摘來異步社區《數據驅動安全&#xff1a;數據安全分析、可視化和儀表盤》一書中的第1章 &#xff0c;第1.2.4節&#xff0c;[美]杰雅克布&#xff08;Jay Jacobs&#xff09;鮑布魯迪斯&#xff08;Bob Rudis&#xff09; 著 薛杰 王占一 張卓 胡開勇 蔣夢飏 趙爽 …

python列反過來_xlwings 教程:使用Python更快速地處理Excel

Excel在當今商業中的使用非常普遍。在Dataquest&#xff0c;出于很多原因&#xff0c;我們通常推薦使用代碼處理數據&#xff0c;并且我們的許多數據科學課程的目標是教授數據分析和數據科學的高效編碼。但是&#xff0c;無論您多么喜歡使用Python&#xff0c;在一天結束時&…

多類線性分類器算法原理及代碼實現 MATLAB

多類線性分類器算法原理及代碼實現 MATLAB 一、算法原理 下面舉例說明為何藍圈部分在case2中是確定的而在case1中不確定&#xff1a; 二、代碼實現 1、HK函數 function [] HK(w1_data,w2_data) %w1_data為第一類數據集 w2_data為第二類數據集 %此函數的作用為用HK算法對輸…

(轉) C#如何使用異步編程

怎么使用異步&#xff0c;就是用委托進行處理&#xff0c;如果委托對象在調用列表中只有一個方法&#xff0c;它就可以異步執行這個方法。委托類有兩個方法&#xff0c;叫做BeginInvoke和EndInvoke&#xff0c;它們是用來異步執行使用。 異步有三種模式 等待模式&#xff0c;在…

javascript 的 ~ 操作符作用

2019獨角獸企業重金招聘Python工程師標準>>> "~" operator in javascript. For anyone else who also didnt know what it does: it converts -1 to 0&#xff0c;可以節省用來比較-1的情況&#xff0c;如 if (~event.origin.indexOf(http://yoursite.com…

駐定相位原理(POSP)以及線性調頻信號的頻譜

最近看論文遇到了駐定相位原理&#xff0c;問老師直接給了我一本書讓我看&#xff0c;看半天只有一段…不是這個方向的&#xff0c;半路出家做畢業設計需要用到這個定理&#xff0c;有錯誤的話請不吝賜教。 一、駐定相位原理 在數字信號處理中&#xff0c;經常需要將一個時域…

vue怎么合并兩個視頻_【軟件分享】視頻分割合并軟件哪款好用呢?怎么剪切合并視頻?...

現在有很多小伙伴都喜歡喜歡自己拍視頻上傳到各大視頻平臺&#xff0c;有時候會遇到關于視頻剪輯方面的難題&#xff0c;比如說&#xff0c;視頻怎么剪切&#xff1f;怎么將兩段小視頻合并成一個呢&#xff1f;這些都是一些比較常常遇到的問題&#xff0c;今天小編就給大家介紹…

怎樣根據字段域查找到其在數據庫中關系與屬性

Infor SyteLine ERP中&#xff0c;很多時候需要做維護&#xff0c;我們需要從打開的window窗口的form中某一個輸入Textbox域或是DropDownList域&#xff0c;去找到它是綁定了數據庫中的哪一張表&#xff0c;哪一個字段的&#xff1f; 其相關的關系或是屬性等。比如下面這個form…

【手勢交互】9. PS Move

索尼研發體感控制技術已有10年&#xff0c;在過去那么多年里。嘗試了3D攝像頭、超聲波和電磁感應等各種技術。最后還是覺得眼下的MOVE所使用的技術最為合適。PS Move是索尼于2010年9月份推出。用來讓PS3主機具備動態感應功能的控制器。他利用動態控制器&#xff08;手柄&#x…

多普勒效應及多普勒頻移的簡單推導

多普勒效應及多普勒頻移的簡單推導 fd≡fR?fT(1)f_d\equiv f_R-f_T \tag{1} fd?≡fR??fT?(1) ??式中&#xff0c;fdf_dfd?表示多普勒頻移&#xff0c;fRf_RfR?表示目標回波的頻率&#xff08;Hz),fTf_TfT?表示發射信號的頻率&#xff08;Hz&#xff09;。 多普勒頻移…

amazons3 檢查連接是否_鋼筋機械連接接頭如何檢查是否合格?抽檢數量、合格率是多少?...

一、鋼筋機械連接介紹1、鋼筋機械連接在連接區段內接頭率的規定(35d)&#xff1a;★接頭宜設置在結構構件中受拉應力較小的部位&#xff0c;當需要在高應力部位設置時&#xff0c;在同一連接區段內Ⅲ接頭的接頭率不應大于25%&#xff0c;Ⅱ接頭率不應大于50%&#xff0c;Ⅰ接頭…

學容器必須懂 bridge 網絡 - 每天5分鐘玩轉 Docker 容器技術(32)

上一節我們討論了 none 和 host 類型的容器網絡&#xff0c;本節學習應用最廣泛也是默認的 bridge 網絡。 Docker 安裝時會創建一個 命名為 docker0 的 linux bridge。如果不指定--network&#xff0c;創建的容器默認都會掛到 docker0 上。 當前 docker0 上沒有任何其他網絡設備…

駐定相位原理(POSP)的簡單應用

在SAR雷達成像中&#xff0c;POSP是相當基礎重要的一個定理&#xff0c;一般在對回波做傅里葉變換時經常用到&#xff0c;一般在論文的開頭就會出現。 ??下面簡單復習一下POSP的步驟&#xff1a; 1&#xff1a;列出傅里葉變換表達式 2&#xff1a;對相位在駐定相位點處泰勒展…

(轉)Unity3DUnity3D在android下調試

轉自&#xff1a;http://blog.csdn.net/zuoyamin/article/details/11827309 一、工具準備 1.JDK——由于android是基于Java平臺開發的&#xff0c;jdk是必須要安裝的。下載地址&#xff1a;http://www.java.net/download/jdk6/6u10/promoted/b32/binaries/jdk-6u10-rc2-bin-b32…

Windows系統時間同步出錯解決辦法

有時候我們設置本地時間與Internet時間同步時&#xff0c;經常連接服務器time.windows.com超時&#xff0c;導致時間同步失敗&#xff0c;解決辦法如下&#xff1a; 利用快捷鍵"WinR"調出運行框&#xff0c;輸入&#xff1a;w32tm /register按回車&#xff0c;執行完…

vs2019 更新安裝錯誤_本月Windows 10累積更新再出BUG:安裝時跳出錯誤代碼

在本月的補丁星期二活動日中&#xff0c;微軟為所有支持的 Windows 10 系統帶來了新一輪的累積更新。和以往一樣&#xff0c;本次發布的 KB4566782 和 KB4565351 兩個累積更新又出現了新的 BUG。根據用戶反饋&#xff0c;Windows10 Version 2004/1909/1903 功能更新安裝這些累積…

【python】畫一個愛心

python畫愛心 做二級python題目的時候&#xff0c;遇到了一個畫愛心編程題&#xff0c;感覺挺有趣的&#xff0c;把它搬到這里來。 from turtle import * def curvemove():for i in range(200):right(1)forward(1) setup(600,600,400,400) hideturtle() pencolor(black) fill…