代码实现:
#include <iostream>
#include <string>
using namespace std;
class Mediator;
class Person
{
public:
Person(string name, int sex, int condition, Mediator* mediator)
{
this->name = name;
this->sex = sex;
this->condition = condition;
this->mediator = mediator;
}
string getName()
{
return name;
}
int getSex()
{
return sex;
}
int getCondition()
{
return condition;
}
Mediator* getMediator()
{
return mediator;
}
virtual void getPartner(Person* person) = 0;
protected:
string name;
int sex;
int condition;
Mediator* mediator;
};
class Mediator
{
public:
void getPartner()
{
if (woman->getSex() == man->getSex())
{
cout << "Sex doesn't match" << endl;
}
if (woman->getCondition() == man->getCondition())
{
cout << woman->getName() << " and " << man->getName() << " matches" << endl;
}
else
{
cout << woman->getName() << " and " << man->getName() << " doesn't match" << endl;
}
}
void setWoman(Person* person)
{
woman = person;
}
void setMan(Person* person)
{
man = person;
}
private:
Person* woman;
Person* man;
};
class Woman : public Person
{
public:
Woman(string name, int sex, int condition, Mediator* mediator)
: Person(name, sex, condition, mediator)
{
}
virtual void getPartner(Person* person)
{
mediator->setWoman(this);
mediator->setMan(person);
mediator->getPartner();
}
};
class Man : public Person
{
public:
Man(string name, int sex, int condition, Mediator* mediator)
: Person(name, sex, condition, mediator)
{
}
virtual void getPartner(Person* person)
{
mediator->setWoman(person);
mediator->setMan(this);
mediator->getPartner();
}
};
void main()
{
Mediator* mediator = new Mediator;
Person* cristina = new Woman("Cristina", 2, 5, mediator);
Person* james = new Woman("James", 1, 4, mediator);
Person* dewade = new Woman("Dewade", 1, 5, mediator);
cristina->getPartner(james);
cristina->getPartner(dewade);
delete cristina;
delete james;
delete dewade;
delete mediator;
}