原型模式是用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
概念:
prototype模式是一种对象创建型模式,它采取赋值原型对象的方法来创建对象的实例。
使用prototype模式创建的实例,具有与原型一样的数据。
1)由原型对象自身创建目标对象。也就是说,对象创建这一动作发自原型对象本身。
2)目标对象是原型对象的一个克隆。也就是说,通过prototype模式创建的对象,不仅仅与原型对象具有相同的结构,还与原型对象具有相同的值。
3)根据对象克隆深度层次的不同,有浅度克隆和深度克隆。
适用情况:
一个复杂对象,具有自我复制功能,统一一套接口
#include<iostream>
using namespace std;
class programmer {
public:
virtual void print() = 0;
virtual programmer* clone() = 0;
};
class cppProgrammer :public programmer {
public:
cppProgrammer() = default;
cppProgrammer(char* n ,int a) {
name = n;
age = a;
}
void print() override {
cout << name << " " << age << endl;
}
programmer* clone() {
cppProgrammer *tem = new cppProgrammer;
*tem = *this;
return tem;
}
private:
char* name;
int age;
};
void main() {
programmer *p1=new cppProgrammer("张三", 28);
p1->print();
programmer *p2 = p1->clone();
p2->print();
system("pause");
}