天天看点

原型模式:克隆生成对象

场景分析(如图)

原型模式:克隆生成对象
定义及本质

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

Prototype:定义克隆自身的接口,约束要克隆自身的类。

ConcretePrototype:克隆自身接口的实现类,真正实现克隆的功能。

Client:获取原型实例对象;获取克隆自身来创建的新实例对象。

浅度克隆与深度克隆

浅度克隆:只克隆按值传递的数据(基本类型、String数据),不克隆引用类型的数据。

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

UML类图

原型模式:克隆生成对象

调用时序图

原型模式:克隆生成对象

优缺点

(1)优点

对客户端隐藏具体的实现类型

运行时动态改变具体的实现类型,克隆一个原型就等于实例化一个类。

(2)缺点

每个原型的子类必须实现clone操作,引用类型处理较麻烦。

继续阅读