您好,登錄后才能下訂單哦!
設計模式之外觀模式-總結
在上一篇中,我們模擬家庭影院項目實現了外觀模式講解。本篇我們對外觀模式進行總結。
來源:凱哥Java(kaigejava).本文由凱哥《23設計模》系列中的一篇。
凱哥突然感覺,使用家庭影院這個例子不恰當。換個通俗易懂的。去銀行存取錢。這個案例大家都遇到過吧。
我們去銀行后,每個窗口都有個漂亮的為各位服務。在我們存取錢的過程中,只需要和窗口溝通就可以了。我們把IDcard給、輸入密碼然后就會給你需要取得錢。我們來分析這個過程。
存取錢用戶相對于銀行系統來說,是外部人員(系統),窗口服務員就是銀行對外提供得一個交互窗口。我們把需要得IDCard、銀行卡、密碼輸入之后,窗口服務員就會給我們打印收據、取錢、請領導簽字(如果取錢額度較大得話)等等操作,窗口服務員都幫我們處理完了。最后,我們返回給我們得是我們需要取得現金或者存得憑證。
我們來分析角色:
外部調用系統(或者客戶端):如使用遙控器控制影院得人或去銀行存取錢得我們
復雜系統:如影院相關得或者銀行系統
在復雜系統中,內部子系統:
銀行例子中的:驗鈔機、打印機、保險箱、銀行領導等。
我們為什么要使用外觀模式?能解決什么問題?
降低了訪問復雜系統的內部的復雜聯系。
如何理解這句話?
去銀行取錢,如果沒有窗口服務,我們需要自己數錢、自己找打印機、自己找銀行領導簽字等等。是不是很麻煩。有了窗口服務員,我們自需要和服務員交換,其他都不用關了。
所以,我們可以得到外觀模式的關鍵代碼在于:當客戶端和復雜系統之間進行交換的時候,在兩者之間在封裝添加一層,這一層的作用就是將調用順序、依賴關系等等都處理好的。
優點:
減少了系統之間的相互依賴關系、提高了系統的靈活性、提高了系統的安全性(想想如果去銀行取錢,讓你自己從保險柜中拿錢這感覺~);
客戶端不之間和復雜系統耦合,使用外觀類和系統進行耦合,降低了耦合性;
預防低水平的開發人員帶來的風險
缺點:
不符合軟件設計的開閉原則,如果,需要修改東西,就要修改對外的窗口,很麻煩,繼承重寫都是不合適的。
使用場景:
為一個復雜的模塊或者是子系統提供外界訪問的模塊;
子系統相對獨立的
外觀模式的目的:
為子系統中的一組接口或者一組功能提供一個一致的接口(界面),外管模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。
本文來源:凱哥Java(kaigejava)
凱哥個人博客:www.kaigejava.com
本文地址:http://kaigejava.com/gwjeesns/article/edit/567
應用實例:
如果家庭影院以及銀行取錢例子還不好理解。那么最簡單的,JAVA中三層開發模式(MVC)就是典型的外觀模式。這下是不是就好理解了.
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。