facade(外觀)模式為子系統中的一組介面提供乙個一致的介面,facade模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。實際上是為客戶端和子系統之間新增乙個層,客戶端只能通過這個層來訪問子系統,好比中介公司。
如圖:
facade模式結構圖:
facade模式與adapter模式有些相似之處,都是為上層提供乙個可以訪問的介面,不過不同之處是,adapter是對單一的類的適配,而facade是提取了各個子系統的介面。
**實現:
#include "iostream"
using namespace std;
class subsystem1
; ~subsystem1(){};
void operation();
};class subsystem2
; ~subsystem2(){};
void operation();
};class facade
;void subsystem1::operation()
void subsystem2::operation()
facade::facade()
facade::~facade()
int main()
僅需要乙個facade物件,因此facade物件通常屬於singleton 模式
23種設計模式(11) 策略模式
定義 定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以互換。型別 行為類模式 類圖 策略模式是對演算法的封裝,把一系列的演算法分別封裝到對應的類中,並且這些類實現相同的介面,相互之間可以替換。在前面說過的行為類模式中,有一種模式也是關注對演算法的封裝 模版方法模式。對照類圖可以看到,策略模...
23種設計模式(11) 責任連模式
定義 使多個物件都有機會處理請求,從而避免了請求的傳送者和接收者之間的耦合關係。將這些物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有物件處理它為止。型別 行為類模式 類圖 首先來看一段 public void test int i,request request else if i 2 else i...
23種設計模式(11) 責任連模式
定義 使多個物件都有機會處理請求,從而避免了請求的傳送者和接收者之間的耦合關係。將這些物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有物件處理它為止。型別 行為類模式 類圖 首先來看一段 public void test int i,request request else if i 2 else i...