C++ 设计模式 建造者模式/原型模式/代理模式(含代码)

建造者模式

适用情况:一个对象的构建比较复杂,将一个对象构建和对象的表示进行分离

#include
using namespace std;
#include"string"
class House
{
public:
	void setDoor(string door)
	{
		this->m_door = door;
	}
	void setWall(string wall)
	{
		this->m_wall = wall;
	}
	void setWindow(string window)
	{
		this->m_window = window;
	}
	//----
	 string getDoor()
	{
		 return this->m_door;
	}
	 string  getWall()
	{
		 return this->m_wall;
	}
	 string  getWindow()
	{
		 return this->m_window;
	}
private:
	string m_door;
	string m_wall;
	string m_window;

};

class Bulid
{
public:
	Bulid()
	{
		m_house = new House;
	}
	void makeBulid()
	{
		buildDoor(m_house);
		buildWall(m_house);
		buildWindow(m_house);
	}
	void buildDoor(House *h)
	{
		h->setDoor("men");
	}
	void buildWall(House *h)
	{
		h->setWall("qiang");
	}
	void buildWindow(House *h)
	{
		h->setWindow("chuanghu");
	}
	House *getHouse()
	{
		return m_house;
	}
private:
	House *m_house;

};

void main()
{
	//客户直接造房子
//	House *house = new house;
	///house->setDoor("men");
	//house->setWall("qiang");
	//house->setWindow("chuanghu");
	//delete house;
	//请工程队
	House *house = NULL;
	Bulid *build = new Bulid;
	build->makeBulid();
	house = build->getHouse();
	house->getDoor();
	house->getWall();
	house->getWindow();

	cout << "hello.." << endl;
	system("pause");
	return;
}

原型模式

原型模式是一种对象创建型模式,它采用复制原型对象的方法来创建对象的实例。使用原型模式创建的实例具有原型一样的数据

由原型对象自身创建目标对象,也就是说对象创建。这些动作发自原型对象本身

目标对象是原型对象的一个克隆,也就是说通过原型对象。模式创建的对象不仅仅原型对象具有相同的结构,它与原型对象具有相同的值

根据对象克隆深度层次不同,有浅度克隆和深度克隆.

#include
using namespace std;
#include"string"
class Person
{
public:
	
	virtual Person* clone()=0;
	virtual void printT()=0;


private:

};

class CPlusProgrammer:public Person
{
public:
	CPlusProgrammer()
	{
		m_name = "";
		m_age = 0;
		m_resume = NULL;
		setRusume("aaaa");
	}
	CPlusProgrammer(string name, int age)
	{
		m_name = name;
		m_age = age;
		m_resume = NULL;
		setRusume("aaaa");
	}
	void setRusume(char *p)
	{
		if (m_resume != NULL)
		{
			delete m_resume;
		}
		m_resume = new char[strlen(p) + 1];
		strcpy(m_resume, p);
	}
	virtual void printT()
	{
		cout<<"m_name"<printT();
	Person *c2 = c1->clone();
	c2->printT();

	cout << "hello.." << endl;
	system("pause");
	return;
}

代理模式

代理模式是构造型的设计模式之一,它可以为其他对象提供一种代理控制对这个对象的访问。所谓代理,是指具有与代理人有相同的接口的类,客户端必须通过代理与被代理的目标类交互,而代理一般在交互的过程中进行某些特别的处理.

#include
using namespace std;
#include"string"
//a中包含b类,a,b类实现协议类,适合于为其他对象提供一种代理以控制这个对象的访问
class Subject
{
public:
	virtual void sailbook() = 0;



};
class RealSubjectBook :public Subject
{
public:
	virtual void sailbook()
	{
		cout << "  当当网" << endl;
	}
};
class  DangDangWang :public Subject
{
public:
	virtual void sailbook()
	{
		RealSubjectBook *rsb = new RealSubjectBook;
		dazhe();
		rsb->sailbook();
		dazhe();
		cout << "  " << endl;
	}
public:
	void dazhe()
	{
		cout << " 双十一打折 " << endl;
	}
private:

	Subject *m_subject;
};
void main()
{
	Subject *s = new  DangDangWang;
	s->sailbook();
	delete s;
	system("pause");
	return;

}
展开阅读全文

页面更新:2024-03-09

标签:模式   工程队   代理人   原型   客户端   接口   对象   房子   协议   目标   情况   客户   代码   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top