栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

设计模式迪米特法则

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

设计模式迪米特法则

// 迪米特法则.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;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/934717.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号