原型模式Prototype¶
相当于拷贝构造函数的编写
Prototype模式是一种对象创建型模式,它采取复制原型对象的方法来创建对象的实例。使用Prototype模式创建的实例,具有与原型一样的数据。
- 由原型对象自身创建目标对象。也就是说,对象创建这一动作发自原型对象本身。
- 目标对象是原型对象的一个克隆。也就是说,通过Prototype模式创建的对象,不仅仅与原型对象具有相同的结构,还与原型对象具有相同的值。
- 根据对象克隆深度层次的不同,有浅度克隆与深度克隆。
总结一句话:让一个复杂的对象,具有自我复制功能和统一一套接口。
类具有复制功能,因为如果类的创建比较复杂,很多属性。
相当于拷贝构造函数的编写。
涉及到深拷贝浅拷贝。
- 抽象Person类
提供一个clone接口,返回一个基类Person对象。
- 一种Person类如 CPlusPlusProgrammer(C++工程师)继承Person类 实现构造析构函数还有clone函数
实现clone函数,里面创建一个对象,赋值返回。
如果成员变量有指针,则需要写set指针变量方法,里面根据大小分配内存创建对象,然后拷贝。
可以生成C++工程师对象 然后就可以clone刚才创建的对象去创建对象
- 客户端 调用C++程序员的clone
Person *c1 = new CPlusPlusProgrammer("Allen˝", 32);
c1->printT();
Person *c2 = c1->clone();
c2->printT();
浅拷贝:两个指针变量指向同一块内存空间
深拷贝:new一块内存 改变指针指向
深拷贝,clone函数,对指针新new内存,单独把内容拷贝出来。