// 迪米特法则.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include
using namespace std;
#include
//又叫最少知识法则,你知道越少,以来越弱,所以需要中间层
class AbstractBuilding{
public:
virtual void sale()=0;
public:
string mQuility;
};
class BuildingA:public AbstractBuilding{
public:
BuildingA()
{
printf("高品质楼盘n");
mQuility="高品质";
}
virtual void sale(){
printf("A楼盘已经售卖n");
}
public:
string mQuility;
};
class BuildingB:public AbstractBuilding{
public:
BuildingB()
{
printf("低品质楼盘n");
mQuility="低品质";
}
virtual void sale(){
printf("B楼盘已经售卖n");
}
public:
string mQuility;
};
//中介类
class Mediator
{
public:
Mediator()
{
AbstractBuilding *bulding=new BuildingA;
vBuilding.push_back(bulding);
bulding =new BuildingB;
vBuilding.push_back(bulding);
}
vector vBuilding;
//对外提供接口
AbstractBuilding *findMyBuiding(string mQuility)
{
for(vector::iterator it=vBuilding.begin();it!=vBuilding.end();it++)
{
if((*it)->mQuility.compare(mQuility)==0)
{
return *it;
}
}
}
virtual void sale()
{
}
~Mediator()
{
for(vector::iterator it=vBuilding.begin();it!=vBuilding.end();it++)
{
if(*it!=NULL)
{
delete *it;
}
}
}
};
//客户端,这种方式直接接触初试类,我们现在要做一个中介类
void test()
{
BuildingA *ba=new BuildingA;
ba->sale();
}
void test02()
{
Mediator *mediator=new Mediator;
AbstractBuilding *buidling=mediator->findMyBuiding("高品质");
if(buidling==NULL)
{
buidling->sale();
}
else
{
cout<<"没有符合你的楼盘"<
test02();
printf("Hello World!n");
return 0;
}