定義
外觀模式(facade pattern)提供了乙個統一的介面,用來訪問子系統中的一群介面。外觀定義了乙個高層介面,讓子系統更加容易使用。
從上面的圖可以看出,facade類對子系統進行了一下封裝,客戶只需要和facade類打交道,不需要接觸子系統中的各個類,也不需要了解子系統中各個類間的關係。從這個角度來說,客戶也就從元件中的子系統中解耦了,不需要依賴於子系統中具體的類了。
外觀模式的乙個重要的目的就是簡化系統,提供給客戶乙個簡單的介面,方便客戶使用。
**實現
例子是為家庭影院構造外觀,讓**電影的步驟盡可能地簡單。下圖給出了類圖。
首先看看hometheate***cade這個高層介面,它提供了6個介面分別執行6個動作,每個動作是通過呼叫子系統中其它的類來實現的。
public class hometheate***cade
// 開始**名為「movie」的電影介面
public void watchmovie(string movie)
public void endmovie()
public void listentocd(string cdtitle)
public void endcd()
public void listentoradio(double frequency)
public void endradio()
}因為子系統中類太多了,這裡只列出乙個,其它的類似。
public class amplifier
public void on()
public void off()
public void setstereosound()
public void setsurroundsound()
public void setvolume(int level)
public void settuner(tuner tuner)
public void set***(***player ***)
public void setcd(cdplayer cd)
public string tostring()
}測試驅動**,也是客戶**:
public class hometheatertestdrive
}本章金句
外觀模式不只是簡化了子系統的介面,也將客戶從元件的子系統中解耦
外觀只是對子系統的介面進行了更高層次的抽象,客戶還是可以直接呼叫子系統中的類的,當然一般情況這是不必要的,只要外觀介面定義的好
外觀模式符合「最少知識原則」
介面卡模式和外觀模式的差別:
兩種模式都是對其它的介面的再次封裝。差別在介面卡強調對乙個或者多個介面的轉換,而外觀模式則強調簡化介面
Head First 設計模式讀書心得 一
head first 設計模式這本書,從思維認知的角度將原本難以理解和記識的設計模式將得通俗易懂。雲認知 有關思考的思考 如何你想掌握一些知識,學習前要不短的暗示自己,讓你的大腦知道 你學習的這些新的知識很重要 或許你正在為一家你嚮往已經的公司的面試準備寫知識,你將要學習的這些知識對你通過面試至關重...
head first設計模式讀書記錄
設計原則 1 針對介面程式設計而非針對實現 2 多用組合,少用繼承 3 復用的潛力 4 封裝變化 5 開閉原則 對擴充套件開放,對修改關閉 6 依賴倒置原則 7 越常用,越不應修改,把可能的修改扔給必須要改的部分,最好扔給擴充套件。封裝變化 8 最少知識原則 減少類與類的重合,只與密友交流 9 越懶...
《Head First 設計模式》讀書筆記
策略模式 定義演算法族,分別封裝起來,讓他們之間可以互相替換,此模式讓演算法的變化獨立於使用演算法的客戶。oo原則 封裝變化 多用組合,少用繼承 針對介面程式設計,不針對實現程式設計 oo基礎 抽象封裝 多型繼承 觀察者模式 在物件之間定義一對多的依賴,這樣一來,當乙個物件改變狀態,依賴它的物件都會...