跳转至

原型模式Prototype

相当于拷贝构造函数的编写

Prototype模式是一种对象创建型模式,它采取复制原型对象的方法来创建对象的实例。使用Prototype模式创建的实例,具有与原型一样的数据。

  1. 由原型对象自身创建目标对象。也就是说,对象创建这一动作发自原型对象本身。
  2. 目标对象是原型对象的一个克隆。也就是说,通过Prototype模式创建的对象,不仅仅与原型对象具有相同的结构,还与原型对象具有相同的值。
  3. 根据对象克隆深度层次的不同,有浅度克隆与深度克隆。

总结一句话:让一个复杂的对象,具有自我复制功能和统一一套接口。

类具有复制功能,因为如果类的创建比较复杂,很多属性。

相当于拷贝构造函数的编写。

涉及到深拷贝浅拷贝。

  1. 抽象Person类

提供一个clone接口,返回一个基类Person对象。

  1. 一种Person类如 CPlusPlusProgrammer(C++工程师)继承Person类 实现构造析构函数还有clone函数

实现clone函数,里面创建一个对象,赋值返回。

如果成员变量有指针,则需要写set指针变量方法,里面根据大小分配内存创建对象,然后拷贝。

可以生成C++工程师对象 然后就可以clone刚才创建的对象去创建对象

  1. 客户端 调用C++程序员的clone
    Person *c1 = new CPlusPlusProgrammer("Allen˝", 32);
    c1->printT();


    Person *c2 = c1->clone();
    c2->printT();

浅拷贝:两个指针变量指向同一块内存空间

深拷贝:new一块内存 改变指针指向

深拷贝,clone函数,对指针新new内存,单独把内容拷贝出来。