設計模式 (十七) 門面模式
阿新 • • 發佈:2018-11-09
門面模式 也叫外觀模式,是一種常用的封裝模式。 要求一個子系統的外部與其內部通訊必須通過一個統一的物件進行。 門面模式提供一個高層次的介面,使得子系統更易於使用。
舉個例子,對應一個寫信的過程,就是一個人自己寫信,先寫內容,再寫信封,再放到信封裡,然後郵寄。後來郵局開了個服務,只要告訴我內容和地址就可以了,其他的就不用管了。這就是門面模式。
簡單的說, 門面物件是外界訪問子系統內部的唯一通道,不管子系統內部多麼雜亂無章,只要門面物件在,就能做到“金玉其外,敗絮其中”。
門面模式的角色
- Facade 門面角色
- subsystem 子系統角色。 可以有一個或多個子系統,每個子系統可以是一個類也可以是一個類的集合。 子系統並不知道門面的存在。
public class A{ public void doSomethingA(){ } } public class B{ public void doSomethingB(){ } } public class C{ public void doSomethingC(){ } } public class Facade{ private A a =new A(); private B b =new B(); private C c =new C(); public void methodA(){ a.doSomethingA(); } publ;ic void methodB(){ b.doSomethingB(); } public void methodC(){ c.doSomethingC(); } }
門面模式的優點
- 減少系統間的依賴。 封裝子系統
- 提高靈活性。 只要門面物件不變就可以了
- 提高安全性
門面模式的缺點
不符合開閉原則。
門面模式的使用場景
- 為一個複雜的模組或系統提供一個供外界訪問的介面
- 子系統相對獨立。外界對子系統的訪問只需要黑箱操作。
- 預防低水平帶來的風險擴散