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

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

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

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

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

  • 字典中中介者的定义是,一个中立方,在谈判和冲突解决过程中起辅助作用。在我们的世界,一个中介者是一个行为设计模式,使我们可以导出统一的接口,这样系统不同部分就可以彼此通信。 如果系统组件之间存在大量的直接关系,就可能是时候,使用一个中心的控制点,来让不同的组件通过它来通信。中介者通过将组件之间显式的直接的引用替换成通过中心点来交互的方式,来做到松耦合。这样可以帮助我们解耦,和改善组件的重用性。 在现