设计模式学习—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;
};