原型模式:克隆生成对象

简介: 原型模式的本质是克隆生成对象

场景分析(如图)
image.png

定义及本质

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

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

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

UML类图
image.png

调用时序图
image.png

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

相关文章
|
6月前
原型模式——克隆
原型模式——克隆
41 0
|
6月前
|
存储 设计模式
浅克隆和深克隆的详细教程~
浅克隆和深克隆的详细教程~
|
存储
【克隆方法+深浅拷贝】
【克隆方法+深浅拷贝】
68 0
抽象类和接口(浅深克隆拷贝)
抽象类和接口(浅深克隆拷贝)
6185 0
|
PHP 开发者
对象克隆|学习笔记
快速学习对象克隆
对象克隆|学习笔记
|
设计模式 安全 Java
2021还不多学几种创建型模式,创建个对象!
本文主要介绍 软件设计模式中的创建型模式
100 0
|
Java C语言
克隆、深拷贝与浅拷贝区别
克隆、深拷贝与浅拷贝区别
168 0
|
设计模式
【设计模式】原型模式 ( 浅拷贝 | 深拷贝 | 原型与单例冲突 | 禁用 final )(一)
【设计模式】原型模式 ( 浅拷贝 | 深拷贝 | 原型与单例冲突 | 禁用 final )(一)
141 0
|
设计模式
【设计模式】原型模式 ( 浅拷贝 | 深拷贝 | 原型与单例冲突 | 禁用 final )(二)
【设计模式】原型模式 ( 浅拷贝 | 深拷贝 | 原型与单例冲突 | 禁用 final )(二)
109 0
|
Java 开发者
对象克隆|学习笔记
快速学习对象克隆