設計模式(八)外觀模式

2021-07-26 14:52:30 字數 1498 閱讀 8185

外觀模式介紹

當我們開發android的時候,無論是做sdk還是封裝api,我們大多都會用到外觀模式,它通過乙個外觀類使得整個系統的結構只有乙個統一的高層介面,這樣能降低使用者的使用成本。

外觀模式定義

為系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得子系統更加容易使用。

外觀模式結構圖

子系統類(subsystem)

我們知道張無忌的三個系統分別是招式、內功和經脈。那我們來建立它們:

/**

* 子系統招式

*/public

class

zhaoshi

public

void qishangquan()

public

void shenghuo()

}

/**

* 子系統內功

*/public

class

neigong

public

void qiankun()

}

/**

* 子系統經脈

*/public

class

jingmai

}

張無忌有很多的武學和內功,怎麼將他們搭配,並對外界隱藏呢,我們接下來看看外觀類:

外觀類(facade)

這裡的外觀類就是張無忌,他負責將自己的招式、內功和經脈通過不同的情況合理的運用:

/**

* 外觀類張無忌

*/public

class

zhangwuji

/*** 使用乾坤大挪移

*/public

void qiankun()

/*** 使用七傷拳

*/public

void qishang()

}

初始化外觀類的同時將各個子系統類建立好。很明顯張無忌很好的將自身的各個系統搭配好,如果使用七傷拳的話就需要開啟經脈、使用內功九陽神功接下來使用招式七傷拳,如果不開經脈或者使用九陽神功的話那麼七傷拳的威力會大打折扣。

客戶端呼叫

public

class test

}

當張無忌使用乾坤大挪移或者七傷拳的時候,比武的對手顯然不知道張無忌本身運用了什麼,同時張無忌也不需要去重新計畫使用七傷拳的時候需要怎麼做,他已經早就計畫好了。如果每次使用七傷拳或者乾坤大挪移時都要計畫怎麼做很顯然會增加成本並貽誤戰機。另外張無忌也可以改變自己的內功、招式和經脈,這些都是對比武的對手有所隱藏的。 

外觀模式本身就是將子系統的邏輯和互動隱藏起來,為使用者提供乙個高層次的介面,使得系統更加易用,同時也隱藏了具體的實現,這樣即使具體的子系統發生了變化,使用者也不會感知到。

設計模式(八)外觀模式

碼農a 我在做一件大事情,步驟是這樣的 買菜,洗菜,切好,烹飪,放調料。碼農b stop,stop,你直接說你要炒菜不就完了嗎。為了提高 利用率,我們一般會把功能封裝成乙個乙個方法,可是當要完成乙個功能時,我們需要呼叫很多個方法時,我們可以在 中乙個乙個方法地挨著呼叫,我們也可以在寫乙個方法來專門封...

設計模式(八) 外觀模式

外觀模式 facade pattern 隱藏系統的複雜性,並向客戶端提供了乙個客戶端可以訪問系統的介面。這種型別的設計模式屬於結構型模式,它向現有的系統新增乙個介面,來隱藏系統的複雜性。這種模式涉及到乙個單一的類,該類提供了客戶端請求的簡化方法和對現有系統類方法的委託呼叫。一般在做模組設計時,都會有...

設計模式筆記(八) 外觀模式

外觀模式 facade 為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得這個子系統更加容易使用。使用場合 第一 在設計初期階段,應該有意識的將不同的兩個層分離,層與層之間建立外觀 facade 第二 在開發階段,子系統因為不斷的重構演化而變得越來越複雜,增加外觀可以提供...