C 設計模式 外觀模式

2021-10-10 19:16:17 字數 1667 閱讀 4036

為子系統中的一組介面提供乙個一致的介面

facade: 外觀角色,是在客戶端直接呼叫的角色,在外觀角色中可以知道相關的(乙個或者多個)子系統的功能和責任,它將所有從客戶端發來的請求委派到相應的子系統去,傳遞給相應的子系統物件處理

subsystem:子系統角色,每乙個子系統可以不是乙個單獨的類,而是乙個類的集合,它實現子系統的功能。

舉例:電源總開關

//子系統類light

class

light

voidon(

)void

off(

)private

: string position;};

//子系統類fan

class

fanvoid

off()}

;//子系統類airconditioner

class

airconditioner

void

off()}

;//子系統類television

class

television

void

off()}

;//外觀類generalswitchfacade

class

generalswitchfacade

voidon(

) fan-

>on(

);ac-

>on(

);tv-

>on(

);}void

off(

) fan-

>

off();

ac->

off();

tv->

off();

}private

: vector

> lights;

shared_ptr fan;

shared_ptr ac;

shared_ptr tv;};

//客戶端測試

優點:對客戶遮蔽子系統元件,減少了客戶處理的物件數目並使得子系統使用起來更加容易。實現了子系統與客戶之間的松耦合關係,降低了大型軟體系統中的編譯依賴性,只是提供了乙個訪問子系統的統一入口,並不影響使用者直接使用子系統類。

缺點:不能很好地限制客戶使用子系統類

在不引入抽象外觀類的情況下,增加新的子系統可能需要修改外觀類或客戶端的源**,違背了「開閉原則」。

當要為乙個複雜子系統提供乙個簡單介面時可以使用外觀模式

客戶程式與多個子系統之間存在很大的依賴性

在層次化結構中,可以使用外觀模式定義系統中每一層的入口,層與層之間不直接產生聯絡,而通過外觀類建立聯絡,降低層之間的耦合度。

1.2.

3.

C 設計模式 外觀模式

目錄 基本概念 與例項 外觀模式 facade 為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。增加外觀facade可以提供乙個簡單的介面,減少它們之間的依賴 為新系統開發乙個外觀facade類,來提供設計粗糙或高度複雜的遺留 的比較清晰簡單的介...

C 設計模式 外觀模式

0.c 設計模式 簡單工廠模式 1.c 設計模式 工廠方法模式 2.c 設計模式 抽象工廠模式 3.c 設計模式 單例模式 4.c 設計模式 建造者模式 5.c 設計模式 原型模式 6.c 設計模式 設配器模式 7.c 設計模式 裝飾器模式 8.c 設計模式 模式 外觀模式 facade patte...

C 設計模式 外觀模式

在軟體開發過程中,客戶端程式經常會與複雜系統的內部子系統進行耦合,從而導致客戶端程式隨著子系統的變化而變化,然而為了將複雜系統的內部子系統與客戶端之間的依賴解耦,從而就有了外觀模式,也稱作 門面 模式。下面就具體介紹下外觀模式。一 外觀 facade 模式 外觀模式提供了乙個統一的介面,用來訪問子系...