門面模式(Facade)又稱外觀模式
為客戶端提供了一個客戶端可以訪問系統(tǒng)的接口。降低訪問復(fù)雜系統(tǒng)的內(nèi)部子系統(tǒng)時的復(fù)雜度,簡化客戶端與之的接口。
何時使用: 1、客戶端不需要知道系統(tǒng)內(nèi)部的復(fù)雜聯(lián)系,整個系統(tǒng)只需提供一個"接待員"即可。 2、定義系統(tǒng)的入口。
應(yīng)用實例: 1、去醫(yī)院看病,可能要去掛號、門診、劃價、取藥,讓患者或患者家屬覺得很復(fù)雜,如果有提供接待人員,只讓接待人員來處理,就很方便。
門面模式與建造者模式類似,不過Builder 傾向于解決創(chuàng)建復(fù)雜的對象的問題,對象有復(fù)雜的內(nèi)部結(jié)構(gòu),我們可以根據(jù)變化靈活的組合。而Facade 傾向于解決內(nèi)部系統(tǒng)各個類之間復(fù)雜邏輯的問題,降低客戶端使用系統(tǒng)的難度。


示例代碼:
//系統(tǒng)角色類
class Register {
public static function register() {
}
}
class Pay {
public static function pay() {
}
}
class Medication {
public static function getMedication() {
}
}
//門面角色類
class Facade {
public function buyMedition() {
Register::register();
Pay::pay() ;
Medication::getMedication();
}
}