設計模式 門面模式

2021-09-24 13:35:16 字數 1557 閱讀 1822

解釋說明:

基本上每個軟體系統都會用到的模式,其含義是為子系統中的一組介面提供乙個一致的介面, 模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。簡單說,就是將複雜的邏輯封裝起來,對外公開簡單的介面,由客戶程式呼叫。 

以收發信件和警察檢查例項為例 

說明:郵局對外只有乙個視窗,接收信件內容和郵件位址。對內呼叫郵件處理的4個函式。將複雜邏輯封裝在郵局的裡面,當需要增加警察來檢查信件時,只需在郵局內增加警察檢查信件的方法。 

注意:將複雜邏輯封裝起來,對外只有乙個簡單的介面。

例子:訊號處理過程。

cmodenpostoffice封裝了複雜的處理邏輯,對外只有sendletter這個函式介面。使客戶程式容易了解到想要做什麼,應該告訴郵局什麼內容,郵局才能正確的工作。

#include using namespace std;

//對內呼叫郵件處理的4個函式。將複雜邏輯封裝在郵局的裡面,

//當需要增加警察來檢查信件時,只需在郵局內增加警察檢查信件的方法。

//注意:將複雜邏輯封裝起來,對外只有乙個簡單的介面。

//抽象信件處理類

class iletterprocess

virtual ~iletterprocess(){}

virtual void writecontext(string context) = 0;

virtual void fillenvelope(string address) = 0;

virtual void letterintoenvelope() = 0;

virtual void sendletter() = 0;

};//信件處理實現類

class cletterprocessimpl :public iletterprocess

~cletterprocessimpl(){}

void writecontext(string context)

void fillenvelope(string address)

void letterintoenvelope()

void sendletter() };

//警察檢查信件類

class cletterpolice

~cletterpolice(){}

void checkletter(iletterprocess* pletterprocess) };

//郵局處理信件類

class cmodenpostoffice

~cmodenpostoffice()

void sendletter(string context, string address)

private:

iletterprocess* m_pletterprocess;

cletterpolice* m_pletterpolice;

};void doitbypostoffice()

void doityourself()

int main()

m/wanggary/category/294620.html

設計模式 門面模式

一 門面模式概述 門面模式是物件的結構模式,外部與乙個子系統的通訊必須通過乙個統一的門面物件進行。門面模式提供乙個高層次的介面,使得子系統更易於使用。1 門面角色 facade 這是門面模式的核心。它被客戶角色呼叫,因此它熟悉子系統的功能。它內部根據客戶角色已有的需求預定了幾種功能組合。2 子系統角...

設計模式 門面模式

門面模式 外觀模式 將子系統中的一組介面提供乙個一致的介面,外觀模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。1 它對客戶遮蔽子系統元件,因而減少了客戶處理的物件的數目並使得子系統使用起來更加方便。2 它實現了子系統與客戶之間的松耦合關係,而子系統內部的功能元件往往是緊耦合的。3 如果...

《設計模式》 門面模式

提供乙個門面去呼叫系統各個子模組,客戶端呼叫門面,減少客戶端與系統中各個子模組的互動,鬆散耦合,facade知道各個子模組,而各個子模組不應該知道facade的存在 客戶端也可以直接呼叫各個子模組,有外觀也可以不使用 當需要呼叫系統內部多個子模組的時候,為了避免客戶端分別呼叫子模組,提供乙個門面,讓...