Prototype模式是一种对象创建型模式,它采取复制原型对象的方法来创建对象的实例。使用Prototype模式创建的实例,具有与原型一样的数据。
1)由原型对象自身创建目标对象。也就是说,对象创建这一动作发自原型对象本身。
2)目标对象是原型对象的一个克隆。也就是说,通过Prototype模式创建的对象,不仅仅与原型对象具有相同的结构,还与原型对象具有相同的值。
name : ws age : 23 id : 1
0x986b020
0x986b038
1)由原型对象自身创建目标对象。也就是说,对象创建这一动作发自原型对象本身。
2)目标对象是原型对象的一个克隆。也就是说,通过Prototype模式创建的对象,不仅仅与原型对象具有相同的结构,还与原型对象具有相同的值。
3)根据对象克隆深度层次的不同,有浅度克隆与深度克隆。
#include<iostream>
using namespace std;
class Person
{
protected:
string mName;
int mAge;
public:
Person()
{
}
Person(string name,int age)
{
mName = name;
mAge = age;
}
virtual void show()=0;
virtual Person *clone()=0;
};
class Student:public Person
{
int mId;
public:
Student()
{
}
Student(string name,int age,int id):Person(name,age)
{
mId = id;
}
void show()
{
cout << "name : " <<mName << "age : " <<mAge<<" id : "<<mId<<endl;
}
Person *clone()
{
Student *tmp = new Student;
*tmp = *this;
return tmp;
}
};
int main()
{
Person *s1 = new Student("ws",23,1);
s1->show();
Person *s2 = s1->clone();
s2->show();
cout<<s1<<endl;
cout<<s2<<endl;
return 0;
}
name : ws age : 23 id : 1
name : ws age : 23 id : 1
0x986b020
0x986b038