建造者模式
适用情况:一个对象的构建比较复杂,将一个对象构建和对象的表示进行分离
#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
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号