现在的位置: 首页 > 综合 > 正文

设计模式学习—Mediator(中介者)

2013年04月16日 ⁄ 综合 ⁄ 共 796字 ⁄ 字号 评论关闭

 

意图:用一个中介对象来封装一系列的独享交互。中介者使得各对象不需要显式的相互引用,从而使得其耦合松散,而且可以独立的改变他们之间的交互.

适用性:

一组对象以定义好,但是通信复杂,相互依赖关系结构混乱

一个对象引用其他对象并且直接通信

想定制一个分布在多个类中的行为,但是又不想定义多个子类

示例图:

示例程序:

//信息变化之后通知中介者,中介者来调用相关对象进行相应的控制

class CMediator
{
public:
    CMediator();
public:
   
~CMediator(void);
    public:
    void InfoChanged(int id)
   
{
        m_PTitle->SetId(id);   
    }
    void SetTitle(CTitle*
pTitle)
    {
        m_PTitle = pTitle;
    }
    public:
   
void ShowTitle()
    {
        m_PTitle->Show();
    }
   
private:
    CTitle* m_PTitle;
};

 

#include "Mediator.h"
class CInfo
{
public:
   
CInfo();
public:
    ~CInfo(void);
public:
    void
SetMediaotr(CMediator* pMediat)
    {
        this->m_pMedia =
pMediat;
    }
    virtual void Change(int newId)
    {
        id =
newId;
        m_pMedia->InfoChanged(newId);
    }
    int
GetID()
    {
        return id;
    }
private:
    int
id;
    CMediator* m_pMedia;
};

 

抱歉!评论已关闭.