DesignPattern/18.MediatorPattern/2.Code/Colleague.h

63 lines
1023 B
C++

#ifndef __COLLEAGUE_H__
#define __COLLEAGUE_H__
#include "common.h"
using namespace std;
// 前向声明
class Mediator;
class Agency;
// 抽象同事类
class Colleague
{
public:
Colleague(){}
virtual ~Colleague(){}
void setMediator(Mediator* iMediator){
this->mediator = iMediator;
}
Mediator* getMediator(){
return this->mediator;
}
void setPersonType(PERSON_TYPE iPersonType){
this->personType = iPersonType;
}
PERSON_TYPE getPersonType(){
return this->personType;
}
virtual void ask() = 0;
virtual void answer() = 0;
private:
PERSON_TYPE personType;
Mediator* mediator;
};
// 具体同事类:房东
class Landlord :public Colleague
{
public:
Landlord();
Landlord(string iName, int iPrice, string iAddress, string iPhoneNum);
void ask();
void answer();
private:
string name;
int price;
string address;
string phoneNumber;
};
// 具体同事类:租客
class Tenant :public Colleague
{
public:
Tenant();
Tenant(string name);
void ask();
void answer();
private:
string name;
};
#endif //__COLLEAGUE_H__