Prototype模式
一.意图
用原型实例创建对象的种类,并且通过拷贝这些原型创建新的对象
二.适用性
1.实例化的类是在运行时刻指定时,入动态装载.
2.当一个类的实例只能由几个不同状态组合中的一种时,.建立相应数目的原型并克隆他们可能比每次用手工实例化类更方便一些.
三.使用场合
当一个系统应该独立于产品的创建,构成和表示时,可以使用原型模式.
四.深浅复制
浅复制:复制引用
深复制:复制对象
五.代码
#include<iostream>
usingnamespacestd;
//prototypemode
classCColor
{
public:
virtualCColor*Clone(){}
int nColor=0;
};
classCProductColor:publicCColor
{
public:
virtualCColor*Clone()
{
//浅复制,复制引用
returnthis;
//深复制,复制对象
CProductColor*cloneType=newCProductColor();
returncloneType;
}
};
intmain()
{
cout<<"HelloWorld!"<<endl;
CColor*Color1=newCProductColor();
Color1->nColor=100;
CColor*Color2=Color1->Clone();
cout<<"Color1.color="<<Color1->nColor<<" Color2.color="<<Color2->nColor<<endl;
Color2->nColor=200;
cout<<"Color1.color="<<Color1->nColor<<" Color2.color="<<Color2->nColor<<endl;
return0;
}