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

 

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

适用性:

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

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

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

示例图:

示例程序:

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

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;
};

 

posted @ 2011-05-15 16:36  Yarkin  阅读(148)  评论(0编辑  收藏  举报