
設計模式之門面模式(Java實現)
小王今天挺勤奮,在認證的寫着代碼,這時領導電話來了,小王啊到我辦公室來一趟。小王心裡忐忑着走進了辦公室。領導笑嘻嘻的告訴了小王一個好活,就是讓小王組建一個項目組,做一個領導很重視的項目“飛天”,小王被任命為項目經理。
小王開了新的工作,首先要選擇一個產品經理,再就是要招幾個開發和測試工程師。我們分析下這個需求,設計類圖如下:

設計類圖
通過分析,我們需要一個項目的抽象接口和對應的一個具體實現類,還有一個PM類來處理項目中的其他事情,代碼實現如下:

飛天項目的設計代碼
上面的例子就是一個門面設計模式,我們看看門面模式的定義:
門面模式(Facade Pattern):要求一個子系統的外部與其內部的通信必須通過一個統一的對象進行,門面模式提供一個高層的接口,使得子系統更易於使用。門面模式也叫做外觀模式,通用類圖如下:

門面模式的通用類圖
其中的角色分析,
1、Faceda門面角色:客戶端和這個門面直接交互,門面知道子系統的多有功能和責任。
2、Subsystem子系統,可以用於一個或者多個子系統,子系統不知道門面的存在。
我們來寫一下通用的代碼,首先定義三個子系統SubSystemA,SubSystemB和SubSystemC

多個子系統
再定義一個門面類,對外提供接口:

門面類
門面模式的優缺點:
1、優點:減少系統之間的相互依賴,提高安全性和靈敏性。
2、缺點:不符開閉原則,對修改關閉,對擴展開放。
門面模式和代理模式的不同:
門面模式為子系統中的一組接口提供一個統一的高層接口,簡化了系統的使用;
代理模式為其他對象提供一種代理以控制對這個對象的訪問。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/281145.html