-
外觀模式UML圖
外觀模式UML
-
定義
外觀模式(也成為門面模式)要求一個(gè)子系統(tǒng)的外部與其內(nèi)部的通信必須通過一個(gè)統(tǒng)一的對(duì)象進(jìn)行咙冗。它提供一個(gè)高層次的接口,使得子系統(tǒng)更易于使用
-
使用場(chǎng)景
在真實(shí)的應(yīng)用系統(tǒng)中诬滩,一個(gè)子系統(tǒng)可能由很多類組成。子系統(tǒng)的客戶為了它們的需要灭将,需要和子系統(tǒng)中的一些類進(jìn)行交互疼鸟。客戶和子系統(tǒng)的類進(jìn)行直接的交互會(huì)導(dǎo) 致客戶端對(duì)象和子系統(tǒng)之間高度耦合庙曙。
-
代碼舉例說明
public class Facede {
//各種子系統(tǒng)的操作
private Light light;
private Door door;
private Window window;
public void goHome(){
light.on();
door.open();
window.open();
}
public void leftHome(){
light.off();
door.close();
window.close();
}
}
-
總結(jié)優(yōu)缺點(diǎn)
- 優(yōu)點(diǎn)
- 使用方便空镜,使用外觀模式客戶端完全不需要知道子系統(tǒng)的實(shí)現(xiàn)過程;
- 降低客戶端與子系統(tǒng)的耦合捌朴;
- 缺點(diǎn)
- 減少了可變性和靈活性吴攒;
- 在不引入抽象外觀類的情況下,增加新的子系統(tǒng)可能需要修改外觀類或客戶端的源代碼砂蔽,違背了“開閉原則”洼怔;