原型模式:克隆生成对象

场景分析(如图)
原型模式:克隆生成对象

定义及本质

定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。
本质:克隆生成对象。
主要功能:
    1)通过克隆来创建新的对象实例;
    2)为克隆出来的新的对象实例复制原型实例属性的值;
与new的区别:
    1)new 一个对象的实例,属性值一般为默认值,或空值;
    2)克隆的实例,属性值就是原型对象实例的属性的值;
结构示意图:

原型模式:克隆生成对象
Prototype:定义克隆自身的接口,约束要克隆自身的类。
ConcretePrototype:克隆自身接口的实现类,真正实现克隆的功能。
Client:获取原型实例对象;获取克隆自身来创建的新实例对象。

浅度克隆与深度克隆
浅度克隆:只克隆按值传递的数据(基本类型、String数据),不克隆引用类型的数据。
深度克隆:既克隆按值传递的数据,又要克隆引用类型的数据。有两种方式可实现:一种是通过new,每个属性赋值;另一种通过实现Cloneable接口实现。

UML类图
原型模式:克隆生成对象

调用时序图
原型模式:克隆生成对象

优缺点
(1)优点
对客户端隐藏具体的实现类型
运行时动态改变具体的实现类型,克隆一个原型就等于实例化一个类。
(2)缺点
每个原型的子类必须实现clone操作,引用类型处理较麻烦。

上一篇:《你必须知道的.net》读书笔记 008——2.4 依赖倒置


下一篇:解决SQL订阅过程中找不到已经创建的订阅