十七、mediator
(中介者)
情景舉例:
用乙個中介物件來封裝一系列的物件互動。
**示例:
/* mediator抽象父類
*/
class dialogdirector ;
/*其他參與者類的父類。注意:它有乙個mediator成員_director,並且在
changed方法中將自身作為識別引數傳入。另:建構函式中需要配置中介器。
*/
class widget ;
/*
*/
void widget::changed ()
/*下面是多個參與者,繼承自相同的父類。
*/
class listbox : public widget;
class entryfield : public widget;
/*
*/
class button : public widget ;
/*呼叫changed。其實內部機制就是將自身作為引數傳入父類中的mediator來
通知更新。
*/
void button::handlemouse (mouseevent& event)
/*具體的mediator子類。私有部分中列舉了參與者
*/
class fontdialogdirector : public dialogdirector ;
/*
*/
void fontdialogdirector::createwidgets ()
/*在mediator關鍵函式widgetchanged中,根據傳入引數的不同,執行不同的動作。
*/
void fontdialogdirector::widgetchanged (
widget* thechangedwidget
) else if (thechangedwidget == _ok) else if (thechangedwidget == _cancel)
}
個人理解:
中介者模式其實和外觀模式很類似,但主要不同的是:外觀模式是單向的,其參與者不知道外觀的存在;而中介者模式中其參與者清楚知道中介者的存在。
其模式的關鍵是在參與者中配置中介者,在適當的時候呼叫中介者,中介者根據呼叫方的不同作出不同的動作。
設計模式筆記(十九) 命令模式
命令模式 command 將乙個請求封裝為乙個物件,從而使你可用不同的請求對客戶進行引數化 對請示排隊或記錄請求日誌,以及支援可撤消的操作。優點 第一,它能夠較容易的設計乙個命令佇列 第二,在需要的情況下,可以較容易地將命令記入日誌 第三,允許接收請求的一方是否要否決請求。第四,可以容易地實現對請求...
設計模式(十九)命令模式
十九 命令模式 將乙個請求封裝為乙個物件,從而使你可用不同的請求對客戶進行引數化 對請求排隊或記錄請求日誌,以及支援可撤銷的操作。優點 第一,能較容易地設計乙個命令佇列 第二,在需要的情況下,可以較容易地將命令記入日誌 第三,允許接受請求的一方決定是否要否決請求 第四,可以容易地實現對請求的撤銷和重...
設計模式學習筆記二十九 組合模式概念了解
一 問題 1 學校院系展示需求 2 要求要在乙個頁面中展示出學校的院系組成,乙個學校有多少個學院,乙個學校有多個系。3 學校 包含學院。學院包含系 二 實現方式 1 繼承方式 不能很好實現管理 2 組合模式 三 組合模式基本介紹 1 由叫部分整體式,它建立了物件的樹形介面,將物件組合成樹狀結構表示 ...