当前位置: 首页 > 编程笔记 >

C++:中介者模式

通正平
2023-04-24

模式定义

用一个中介对象来封装(封装变化)一系列的对象交互。中介者使各对象不需要显式的相互依赖>运行时依赖),从而使其耦合松散(管理变化),而且可以独立地改变它们之间的交互。

中介者模式的优点

中介者模式的优点就是减少类间的依赖, 把原有的一对多的依赖变成了一对一的依赖,同事类只依赖中介者, 减少了依赖, 当然同时也降低了类间的耦合。

中介者模式的缺点

中介者模式的缺点就是中介者会膨胀得很大, 而且逻辑复杂, 原本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 意图 中介者模式是一种行为设计模式, 能让你减少对象之间混乱无序的依赖关系。 该模式会限制对象之间的直接交互, 迫使它们通过一个中介者对象进行合作。 问题 假如你有一个创建和修改客户资料的对话框, 它由各种控件组成, 例如文本框 (Text­Field)、 复选框 (Checkbox) 和按钮 (Button

  • 一、定义 面向对象设计鼓励将行为分布到各个对象中,把对象划分成更小的粒度,有助于增强对象的可复用性。但由于这些细粒度对象之间的联系激增,又可能反过来降低它们的可复用性。 中介者模式的作用就是解除对象与对象之间的紧耦合关系。 现实中的中介:机场指挥塔、博彩公司 二、示例:购买商品 假设我们正在开发一个购买手机的页面,购买流程中,可以选择手机颜色以及输入购买数量,同时页面中可以对应展示输入内容。还有一

  • 中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。 介绍 意图:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 主要解决:对象与对象之间存在大量的关联关系,这样势必会导致系

  • 简介 在用户与用户直接聊天的设计方案中,用户对象之间存在很强的关联性,将导致系统出现如下问题: 系统结构复杂:对象之间存在大量的相互关联和调用,若有一个对象发生变化,则需要跟踪和该对象关联的其他所有对象,并进行适当处理。 对象可重用性差:由于一个对象和其他对象具有很强的关联,若没有其他对象的支持,一个对象很难被另一个系统或模块重用,这些对象表现出来更像一个不可分割的整体,职责较为混乱。 系统扩展性