外觀模式 透過現象看本質

2021-07-22 11:54:00 字數 907 閱讀 5703

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

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

下面通過乙個例子來簡單演示一下外觀模式。

假設我們原先有一些方法,用這些方法可以完成向乙個好友傳送hello,

//尋找目標好友

function

searchfriend

($name)

//開啟聊天視窗

function

openwindow

($name);

//傳送hello

function

sayhello

()

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

class

chatfacade

public

function

chat

()}

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

$obj

=new chatfacade('manyhong');

$obj

->chat();

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

透過現象看本質

例子 你回家的時候,發現沒帶鑰匙,你聯絡了乙個鎖匠來開鎖,結果他很快來了,並且在一分鐘之內給你開啟了鎖,問你要1000元,你會覺得很不值 但是如果乙個鎖匠用了幾個小時或者更長時間幫你開啟了鎖,你會看到他的努力,要同樣的錢,你會覺得很合理 這實際上是乙個誤區,人往往會看到一些表面的努力,而忽略了一些隱...

透過表象看本質!?

做了這麼多年學生,一直不知道該如何搞科研。直到有一天,我在興致勃勃的調 調整著引數,看著結果。就在這時,導師也蠻有興致的走過看,並發問,這結果說明了什麼?為什麼不能?那什麼方法能?這些方法有什麼異同?導師連珠炮式問了下去。留下傻傻的我在一邊,我還沒調研過。那就去調研一下,只是這樣的看是不能幫你解決你...

透過表象看本質

前段時間,好友王胖子問了熊熊乙個問題,他們的 oracle 資料庫,有個主要的表空間設定的自動增長,每次增長 100m 卻無法滿足業務需求,問了一下 oracle 方面,說是自動增長的步長太小了,於是胖子在資料庫裡查詢了一下,有了以下的問題 胖子 熊,在麼,問個問題?熊熊 啥問題 胖子 看看,我這個...