1. 程式人生 > >外觀模式——透過現象看本質

外觀模式——透過現象看本質

外觀模式用於為複雜系統建立一個簡單清晰的介面。

當我們需要使用到子系統的程式碼時,為了避免過去深入地呼叫子系統程式碼而導致後期程式碼難以維護,減低程式碼和子系統的耦合性,我們需要在程式碼和子系統中引入一個入口。實際上就是在子系統程式碼進行一次封裝,那麼我們在呼叫子系統程式碼的時候就可以通過呼叫封裝的方法來呼叫,以致於後期修改子系統程式碼時不會對我們的程式碼有很大的影響。

下面通過一個例子來簡單演示一下外觀模式。
假設我們原先有一些方法,用這些方法可以完成向一個好友傳送hello,

//尋找目標好友

function searchFriend($name){
    echo "尋找目標好友:$name"
; } //開啟聊天視窗 function openWindow($name){ echo "開啟$name的聊天視窗"; }; //傳送hello function sayHello(){ echo "sayhello"; }

當我們每次想要找好友say hello的時候,都要呼叫這一系列方法,如果後期系統升級或者程式碼修改,都需要修改我們呼叫這些程式碼的地方,如果你的程式碼已經遍佈了子系統程式碼,那麼這樣的維護升級的工作量將是巨大的。為了避免這種情況,我們使用外觀模式來解決這個問題:

class chatFacade{
       private $name;
       public
function __construct($friend){ $this->name=$friend; } public function chat(){ searchFriend($this->name); openWindow($this->name); sayHello(); } }

在使用的時候,現在我們只需:

$obj=new chatFacade('manyhong');
$obj->chat();

為複雜系統建立簡單介面的好處是明顯的,但是另一方面你可能會過度抽象系統。如果想要使客戶端訪問程式碼變得簡介或者想把系統中的修改對客戶端程式碼隱藏,使用外觀模式吧。