mediator模式

将对象封装在类似中介的类中,对象之间的通信他们本身不用关心

mediator.h

#ifndef _MEDIATOR_H

#define _MEDIATOR_H

#include <iostream>

#include <string>

using namespace std;

class Mediator

{

public:

Mediator() {

}

~Mediator() {

}

virtual void DoActionFromAtoB()=0;

virtual void DoActionFromBtoA()=0;

};

class Colleage

{

public:

virtual ~Colleage() {

}

virtual void Action()=0;

Colleage() {

}

Colleage(Mediator* mdt) : _mdt(mdt) {

}

public:

Mediator* _mdt;

string _sdt;

};

class ConcreteColleageA : public Colleage

{

public:

ConcreteColleageA() {

}

ConcreteColleageA(Mediator* mdt) : Colleage(mdt) {

}

~ConcreteColleageA() {

}

void Action() {

_mdt->DoActionFromAtoB();

cout << "state of concreteColleageA:" << _sdt << endl;

}

public:

string _sdt;

};

class ConcreteColleageB : public Colleage

{

public:

ConcreteColleageB() {

}

ConcreteColleageB(Mediator* mdt) : Colleage(mdt) {

}

~ConcreteColleageB() {

}

void Action() {

_mdt->DoActionFromBtoA();

cout << "state of concreteColleageB:" << _sdt << endl;

}

public:

string _sdt;

};

class ConcreteMediator : public Mediator

{

public:

ConcreteMediator() {

}

~ConcreteMediator() {

}

ConcreteMediator(Colleage* clgA, Colleage* clgB) : _clgA(clgA), _clgB(clgB) {

}

void DoActionFromAtoB() {

_clgB->_sdt = _clgA->_sdt;

}

void DoActionFromBtoA() {

_clgA->_sdt = _clgB->_sdt;

}

void IntroColleage(Colleage* clgA, Colleage* clgB) {

_clgA = clgA;

_clgB = clgB;

}

public:

Colleage* _clgA;

Colleage* _clgB;

};

#endif // _MEDIATOR_H

mediator.cpp

#include "mediator.h"

int main()

{

ConcreteMediator* m = new ConcreteMediator;

ConcreteColleageA* c1 = new ConcreteColleageA(m);

ConcreteColleageB* c2 = new ConcreteColleageB(m);

m->IntroColleage(c1, c2);

c1->_sdt = "old";

c2->_sdt = "old";

c1->Action();

c2->Action();

c1->_sdt = "new";

c1->Action();

c2->Action();

c2->_sdt = "old";

c2->Action();

c1->Action();

return 0;

}

编译: make mediator

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,969评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,064评论 19 139
  • //出自51博客:www.Amanda0928.51.com 第一章 一、选择题 1.B; (typedef ,t...
    Damongggggg阅读 13,859评论 0 1
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,860评论 0 17
  • 一. Java基础部分.................................................
    wy_sure阅读 9,290评论 0 11

友情链接更多精彩内容