您当前的位置: 首页 > 

phymat.nico

暂无认证

  • 4浏览

    0关注

    1967博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

设计模式-行为-中介者

phymat.nico 发布时间:2017-10-07 20:23:26 ,浏览量:4

#pragma once

//#ifndef _COLLEAGE_H_
//#define _COLLEAGE_H_
#include 

using namespace std;
class Mediator;
class Colleage
{
public:
	virtual ~Colleage();
	virtual void Aciton() = 0;
	virtual void SetState(const string& sdt) = 0;
	virtual string GetState() = 0;
protected:
	Colleage();
	Colleage(Mediator* mdt);
	Mediator* _mdt;
private:
};
class ConcreteColleageA:public Colleage
{
public:
	ConcreteColleageA();
	ConcreteColleageA(Mediator* mdt);
	~ConcreteColleageA();
	void Aciton();
	void SetState(const string& sdt);
	string GetState();
protected:
private:
	string _sdt;
};
class ConcreteColleageB:public Colleage
{
public:
	ConcreteColleageB();
	ConcreteColleageB(Mediator* mdt);
	~ConcreteColleageB();
	void Aciton();
	void SetState(const string& sdt);
	string GetState();
protected:
private:
	string _sdt;
};
//#endif //~_COLLEAGE_H_

//Mediator.h
//#ifndef _MEDIATOR_H_
//#define _MEDIATOR_H_
class Colleage;
class Mediator
{
public:
	virtual ~Mediator();
	virtual void DoActionFromAtoB() = 0;
	virtual void DoActionFromBtoA() = 0;
protected:
	Mediator();
private:
};
class ConcreteMediator:public Mediator
{
public:
	ConcreteMediator();
	ConcreteMediator(Colleage* clgA,Colleage* clgB);
	~ConcreteMediator();
	void  SetConcreteColleageA(Colleage* clgA);
	void  SetConcreteColleageB(Colleage* clgB);
	Colleage* GetConcreteColleageA();
	Colleage* GetConcreteColleageB();
	void  IntroColleage(Colleage* clgA,Colleage* clgB);
	void DoActionFromAtoB();
	void DoActionFromBtoA();
protected:
private:
	Colleage* _clgA;
	Colleage* _clgB;
};
//#endif //~_MEDIATOR_H
#include "StdAfx.h"
#include "mediator_impl.h"

//Colleage.cpp
#include 
using namespace std;

Colleage::Colleage()
{

}
Colleage::Colleage(Mediator* mdt)
{ 
	this->_mdt = mdt;
}
Colleage::~Colleage()
{

}
ConcreteColleageA::ConcreteColleageA()
{
}
ConcreteColleageA::~ConcreteColleageA()
{

}
ConcreteColleageA::ConcreteColleageA(Mediator* mdt)
:Colleage(mdt) 
{
}
string ConcreteColleageA::GetState()
{ 
	return _sdt; 
}
void  ConcreteColleageA::SetState(const string& sdt)
{ 
	_sdt = sdt;
}
void ConcreteColleageA::Aciton()
{
	_mdt->DoActionFromAtoB();
	coutSetState("old");
	c1->Aciton();//A调用中介者通信方法与B通信
	c2->Aciton();
	coutAciton();
	c2->Aciton();
	coutAciton();
	c1->Aciton();

	delete m;
	delete c1;
	delete c2;
	system("pause");

	return 0;
}

关注
打赏
1659628745
查看更多评论
立即登录/注册

微信扫码登录

0.0527s