模式定义
用一个中介对象来封装(封装变化)一系列的对象交互。中介者使各对象不需要显式的相互依赖>运行时依赖),从而使其耦合松散(管理变化),而且可以独立地改变它们之间的交互。
中介者模式的优点
中介者模式的优点就是减少类间的依赖, 把原有的一对多的依赖变成了一对一的依赖,同事类只依赖中介者, 减少了依赖, 当然同时也降低了类间的耦合。
中介者模式的缺点
中介者模式的缺点就是中介者会膨胀得很大, 而且逻辑复杂, 原本N个对象直接的相互依赖关系转换为中介者和同事类的依赖关系, 同事类越多, 中介者的逻辑就越复杂。
中介者模式的实际应用
机场调度中心
MVC框架
媒体网关
中介服务
//通用抽象中介者
class Mediator {
//定义同事类
protected:
ConcreteColleague1 m_c1;
ConcreteColleague2 m_c2;
public:
ConcreteColleague1 getC1() {
return m_c1;
}
void setC1(ConcreteColleague1 c1) {
m_c1 = c1;
}
ConcreteColleague2 getC2() {
return m_c2;
}
void setC2(ConcreteColleague2 c2) {
m_c2 = c2;
}
//中介者模式的业务逻辑
virtual void doSomething1() = 0;
virtual void doSomething2() = 0;
};
//通用中介者
class ConcreteMediator : public Mediator {
public:
void doSomething1() {
m_c1.selfMethod1();
m_c2.selfMethod2();
}
void doSomething2() {
m_c1.selfMethod1();
m_c2.selfMethod2();
}
};
//抽象同事类
class Colleague {
protected:
Mediator* mediator;
public:
Colleague(Mediator* _mediator) {
mediator = _mediator;
}
};
//具体同事类
class ConcreteColleague1:public Colleague {
//通过构造函数传递中介者
public:
ConcreteColleague1(Mediator* _mediator):Colleague(_mediator){
}
public:
void selfMethod1() {
//处理自己的业务逻辑
}
//依赖方法 dep-method
void depMethod1() {
mediator->doSomething1();
}
};
class ConcreteColleague2:public Colleague {
public:
ConcreteColleague2(Mediator* _mediator):Colleague(_mediator) {}
public:
void selfMethod2() {
//处理自己的业务逻辑
}
//依赖方法 dep-method
void depMethod2() {
//处理自己的业务逻辑
//自己不能处理的业务逻辑, 委托给中介者处理
mediator->doSomething2();
}
};
本文向大家介绍C++设计模式之中介者模式,包括了C++设计模式之中介者模式的使用技巧和注意事项,需要的朋友参考一下 前言 我们都知道,这个国际政治是一门很深的学问,不玩政治的人是搞不懂的。那么多的国家,国家之间的关系又及其复杂;就好比现在,美国和中国有经济利益关系,美国又和日本有盟友关系,朝鲜又和中国有说不清道不明的关系;这些复杂的关系,稍微处理不好,就可能引发局部战争,更有可能引发第三次世界大战
主要内容:介绍,实现,ChatRoom.java,User.java,MediatorPatternDemo.java中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。 介绍 意图:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 主要解决:对象与对象之间存在大量的关联关系
亦称: 调解人、控制器、Intermediary、Controller、Mediator 意图 中介者模式是一种行为设计模式, 能让你减少对象之间混乱无序的依赖关系。 该模式会限制对象之间的直接交互, 迫使它们通过一个中介者对象进行合作。 问题 假如你有一个创建和修改客户资料的对话框, 它由各种控件组成, 例如文本框 (TextField)、 复选框 (Checkbox) 和按钮 (Button
一、定义 面向对象设计鼓励将行为分布到各个对象中,把对象划分成更小的粒度,有助于增强对象的可复用性。但由于这些细粒度对象之间的联系激增,又可能反过来降低它们的可复用性。 中介者模式的作用就是解除对象与对象之间的紧耦合关系。 现实中的中介:机场指挥塔、博彩公司 二、示例:购买商品 假设我们正在开发一个购买手机的页面,购买流程中,可以选择手机颜色以及输入购买数量,同时页面中可以对应展示输入内容。还有一
中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。 介绍 意图:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 主要解决:对象与对象之间存在大量的关联关系,这样势必会导致系
简介 在用户与用户直接聊天的设计方案中,用户对象之间存在很强的关联性,将导致系统出现如下问题: 系统结构复杂:对象之间存在大量的相互关联和调用,若有一个对象发生变化,则需要跟踪和该对象关联的其他所有对象,并进行适当处理。 对象可重用性差:由于一个对象和其他对象具有很强的关联,若没有其他对象的支持,一个对象很难被另一个系统或模块重用,这些对象表现出来更像一个不可分割的整体,职责较为混乱。 系统扩展性