調侃《Head First設計模式》之外觀模式

2021-07-02 04:37:01 字數 1213 閱讀 5250

看下這些元件的類圖:

用**實現就是:

這時候你應該很煩了:看個電影要開啟這麼多開關真tm煩!而且看完電影後還要把開關都關一遍,甚至聽cd都很麻煩。怎麼辦呢?

解決方案很簡單,你需要的只是增加乙個類將各種開關介面包裝起來。如圖hometheate***cade類:

hometheate***cade對外暴露幾個介面,每個介面均是是對各種元件類的介面做相應的封裝,之前呼叫的一系列方法現在乙個方法搞定。具體類:

呼叫乙個方法實質呼叫了很多元件的開關方法。很方便是不?

客戶端只要把各個元件的物件引用傳入hometheate***cade類就行了。

來看官方定義:

外觀模式提供了乙個統一的介面,用來訪問子系統中的一群介面。外觀定義了乙個高層介面,讓子系統更容易使用。

類圖如下:

外觀模式不僅簡化了介面,還將客戶從元件的子系統中解耦。另外的乙個好處是,外觀在簡化介面的同時,仍然將系統完整暴露出來,只要有需要,客戶端依然可以直接使用子系統的類。

提到外觀模式,就不得不提乙個重要的oo原則:

「最少知識」原則:只和你的密友談話。

它告訴我們,不要讓太多類相互依賴,不然系統會成為乙個易碎的系統,需要花費很多成本維護。

這個原則提供了乙個方針避免類依賴:對於乙個物件來說,我們只應該呼叫屬於以下範圍的方法:

1.該物件本身的方法。

2.方法引數傳進來的物件的方法。

3.該物件方法建立的物件的方法。

4.物件的成員變數物件的方法。

這個方針告訴我們,不要呼叫其他方法返回的物件的方法。

headfirst設計模式

花了一周多一點的時間看完了headfirst的設計模式。看完之後有一種恍然大悟的感覺,仔細想想有覺得自己好像什麼也看懂。簡單說下對這本書的一點感悟吧,headfirst的書比較通俗易懂,之前看了四人幫的設計模式,看一半就有一種痛不欲生的感覺,自己水平有限,看不懂,也就沒在勉強自己了。對於模式其實簡單...

HeadFirst 設計模式 工廠模式

定義乙個建立物件的介面,由子類決定要例項化的類。工廠方法將類例項推遲到子類。依賴倒置。第一種方式是 class pizzastore public pizza orderpizza string type class pizzafactory pizza pizza null 將pizza這個例項提...

HeadFirst 設計模式 復合模式

模式通常被一起使用,並被組合在同乙個設計解決方案中。復合模式定義 復合模式在乙個解決方案中結合兩個或多個模式,以解決一般或重 生的問題。mvc,mode 模型 view 檢視 controller 控制器 分別是mvc的三個部分。使用mvc模式,目的是為了解耦,各模組部分只需要處理相應的內容。檢視層...