結構型 外觀模式

2021-09-02 10:31:20 字數 1400 閱讀 4361

定義

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

umlfacade:

這個外觀類為子系統提供乙個共同的對外介面

clients:客戶物件通過乙個外觀介面讀寫子系統中各界面的資料資源。

例項1.比如乙個家庭影院,我們需要看電影,肯需要先開啟電視機,音響,調節燈光,炸爆公尺花,準備可樂等一系列的動作,呼叫電視機,音響、微波爐等子系統的各種介面,但是我們將這些介面定義好放在乙個高層介面中,選擇看電影由這個高層介面呼叫各子系統完成自己的工作。

2.啟動電腦,需要cpu 記憶體等各組建工作,而電腦給了乙個開機按鈕就是乙個外觀模式,讓人(客戶)可以按乙個按鈕而啟動各組建,不用乙個個處理。

/* complex parts */

class cpu

public void jump(long position)

public void execute()

}class memory

}class harddrive

}/* façade */

class computer

}/* client */

class you

}

優點

(1)實現了子系統與客戶端之間的松耦合關係。

(2)客戶端遮蔽了子系統元件,減少了客戶端所需處理的物件數目,並使得子系統使用起來更加容易。

缺點使用場景

(1)設計初期階段,應該有意識的將不同層分離,層與層之間建立外觀模式。

(2) 開發階段,子系統越來越複雜,增加外觀模式提供乙個簡單的呼叫介面。

(3) 維護乙個大型遺留系統的時候,可能這個系統已經非常難以維護和擴充套件,但又包含非常重要的功能,為其開發乙個外觀類,以便新系統與其互動。

注:1.facade模式不僅簡化了整個元件系統的介面,同時從某種程度上也達到了一種「解耦」的效果----內部子系統的任何變化不會影響到facade介面的變化。

facade設計模式更注重從架構的層次去看整個系統,而不是單個類的層次。facdae很多時候更是一種架構

2.在設計外觀時,不需要增加額外的功能,

不要從外觀方法中返回子系統中的元件給客戶,

應用外觀的目的是提供乙個高層次的介面。因此,外觀方法最適合提供特定的高層次的業務服務,而不是進行底層次的單獨的業務執行。

3.注意區分facade模式、adapter模式、bridge模式與decorator模式。facade模式注重簡化介面,adapter模式注重轉換介面,bridge模式注重分離介面(抽象)與其實現,decorator模式注重穩定介面的前提下為物件擴充套件功能。

結構型 外觀模式

為子系統中的一組介面提供乙個一致的介面,外觀模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。其實就是子系統中的類共同使用時太麻煩,客戶不能每次為了完成某個功能,就寫一遍呼叫 所以把 抽象出來,封裝到乙個外觀類的方法中 優點 減少客戶與子系統之間的耦合度。客戶在利用子系統實現某功能時,無需...

結構型模式 外觀

結構圖 模式說明 擴充套件點在subsystem集合。增加乙個具體的子系統後,可能但不一定需要修改fa ade外觀類。客戶端需要知道具體哪乙個fa ade外觀類。客戶端不需要關係到底哪個subsystem類負責fa ade外觀類的何種任務。外子系統中的一組介面提供乙個一致的介面,外觀模式定義了乙個高...

結構型模式 外觀

為子系統中的一組介面提供乙個一致的介面。facade模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。外觀模式,即facade,是乙個比較簡單的模式。它的基本思想如下 如果客戶端要跟許多子系統打交道,那麼客戶端需要了解各個子系統的介面,比較麻煩。如果有乙個統一的 中介 讓客戶端只跟中介打交...