行为型模型之中介者模式

原创 2018年04月14日 22:32:17
#include<iostream>
#include<string>
using namespace std;

class Admierter;
class Person
{
public:
	Person(string name, int sex, int condition, Admierter *admierter)
	{
		m_name = name;
		m_sex = sex;
		m_condition = condition;
		m_admierter = admierter;
	}
	virtual void getPartner(Person*p) = 0;
	string getName()
	{
		return m_name;
	}

	int getSex()
	{
		return m_sex;
	}

	int getCondition()
	{
		return m_condition;
	}
protected:
	string m_name;
	int m_sex;
	int m_condition;
	Admierter *m_admierter;
};

class Admierter
{
public:
	void setWoman(Person*p1)
	{
		woman = p1;
	}

	void setMan(Person*p2)
	{
		man = p2;
	}

	void getPartner()//由中介进行判断是否相配
	{
		if (woman->getSex() == man->getSex())
		{
			cout << "同性恋" << endl;
		}
		if (woman->getCondition() == man->getCondition())
		{
			cout << woman->getName() << " 和 " << man->getName() << "绝配!" << endl;
		}
		else
		{
			cout << woman->getName() << " 和 " << man->getName() << "不相配" << endl;
		}
	}
private:
	Person *woman;
	Person *man;
};

class Woman :public Person
{
public:
	Woman(string name, int sex, int condition, Admierter *admierter) :Person(name, sex, condition,admierter)
	{

	}
	virtual void getPartner(Person*p)
	{
		m_admierter->setWoman(this);
		m_admierter->setMan(p);
		m_admierter->getPartner();
	}
};

class Man :public Person
{
public:
	Man(string name, int sex, int condition, Admierter *admierter) :Person(name, sex, condition, admierter)
	{

	}
	virtual void getPartner(Person*p)
	{
		m_admierter->setWoman(p);
		m_admierter->setMan(this);
		m_admierter->getPartner();
	}
};

void main()
{
	Admierter *admierter = new Admierter;
	Woman *xiaoyu = new Woman("小雨", 2, 3, admierter);
	Man *xiaowang = new Man("小王", 1, 2, admierter);
	Man *xiaoliu = new Man("小刘", 1, 3, admierter);
	xiaoyu->getPartner(xiaowang);
	xiaoyu->getPartner(xiaoliu);

	xiaowang->getPartner(xiaoliu);

}

运行结果:



行为型之中介者模式

为减少类间的紧密程度,两个存在密切关系的对象间设置一个中间层来协调调用.中介者(Mediator)模式一、解决的问题1、在完成某一个功能时,出现多个对象相互关联交互的情况,对象之间常常会维持一种复杂的...
  • explorewen
  • explorewen
  • 2008年08月20日 15:16
  • 348

设计模式-行为型之中介者模式

模式动机   在面向对象设计中,如果一个对象会影响其他对象,同时也要被其他对象影响,那么我们可以称这两个对象为同事类(Colleague),同事类一般由多个组成,他们之间相互影响,相互依赖。同事类越多...
  • ABC374744988
  • ABC374744988
  • 2015年09月15日 23:40
  • 290

设计模式--行为型--中介者模式

一、中介者模式简介(Brief Introduction) 中介者模式(Mediator Pattern),定义一个中介对象来封装系列对象之间的交互。中介者使各个对象不需要显示地相互引用,从而使其耦...
  • acesql
  • acesql
  • 2012年11月26日 10:49
  • 245

中介者模式(行为型)

中介这个词在我们听的不要太多了,印象最深刻的莫过于房产中介了,你看见一个穿着西装打着领带的人迈着疾快的步伐向你走来,别担心,他只是想问问你买不买房。   在使用手机远距离通话时,手机也可以看做是中介...
  • u012484172
  • u012484172
  • 2017年01月23日 16:25
  • 113

行为型-中介者模式(Mediator)

中介者模式(Mediator Pattern):用一个中介对象(中介者)来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式又称为...
  • qq_23211905
  • qq_23211905
  • 2017年09月27日 17:21
  • 85

中介者模式(行为型)

中介者模式:用一个中介对象封装一系列对象的交互,中介者使各对象不需要显式地相互作用,从而使其耦合松散,而且可以独立的改变它们之间的交互.按照我的理解: 中介者模式类似婚姻介绍所,想象自己去婚姻中介所...
  • Petershusheng
  • Petershusheng
  • 2016年06月16日 18:28
  • 500

行为型设计模式-中介者模式

中介者模式:调停者模式 定义一个中介对象来封装系列对象之间的交互。中介者使各个对象不需要显示地相互引用,从而使其耦合性松散,而且可以独立地改变他们之间的交互。 中介者模式参与角色: 抽象中介者...
  • yang1464657625
  • yang1464657625
  • 2017年03月02日 14:47
  • 157

【设计模式】—-(17)中介者模式(行为型)

中介者模式: 一、概念:       所谓中介者模式就是用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。      ...
  • singit
  • singit
  • 2017年01月31日 23:52
  • 351

设计模式-行为型-中介者模式(Mediator)

设计模式-行为型-中介者模式(Mediator)
  • jx_870915876
  • jx_870915876
  • 2016年08月06日 17:37
  • 18877

[设计模式-行为型]中介者模式(Mediator)

调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用。从而使他们可以松散偶合。当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用。保证这些作用可以彼此独立的变化。调...
  • oscar999
  • oscar999
  • 2015年01月08日 08:08
  • 1051
收藏助手
不良信息举报
您举报文章:行为型模型之中介者模式
举报原因:
原因补充:

(最多只允许输入30个字)