原型模式:克隆生成对象

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

场景分析(如图)
image.png

定义及本质

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

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

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

UML类图
image.png

调用时序图
image.png

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

相关文章
|
3月前
原型模式——克隆
原型模式——克隆
33 0
|
12月前
|
设计模式 Java 程序员
谈谈你对深克隆和浅克隆的理解
一个工作了5年的程序员私信我说,前几天去阿里面试被问到这样一个这样的面试题,说谈谈你对深克隆和浅克隆的理解。他回答说深克隆是克隆值,浅克隆是克隆引用,当时他只说了这样一句话,回答完以后,他看到面试官的表情很诧异,面试也没有继续深入追问了。小伙伴们,如果是你来回答,你也会这样回回答吗?
69 0
|
3月前
|
存储 设计模式
浅克隆和深克隆的详细教程~
浅克隆和深克隆的详细教程~
|
9月前
|
存储
【克隆方法+深浅拷贝】
【克隆方法+深浅拷贝】
51 0
|
PHP 开发者
对象克隆|学习笔记
快速学习对象克隆
101 0
对象克隆|学习笔记
|
设计模式 安全 Java
2021还不多学几种创建型模式,创建个对象!
本文主要介绍 软件设计模式中的创建型模式
93 0
|
Java C语言
克隆、深拷贝与浅拷贝区别
克隆、深拷贝与浅拷贝区别
152 0
|
设计模式
【设计模式】原型模式 ( 浅拷贝 | 深拷贝 | 原型与单例冲突 | 禁用 final )(一)
【设计模式】原型模式 ( 浅拷贝 | 深拷贝 | 原型与单例冲突 | 禁用 final )(一)
132 0
|
设计模式
【设计模式】原型模式 ( 浅拷贝 | 深拷贝 | 原型与单例冲突 | 禁用 final )(二)
【设计模式】原型模式 ( 浅拷贝 | 深拷贝 | 原型与单例冲突 | 禁用 final )(二)
101 0
|
Java 开发者
对象克隆|学习笔记
快速学习对象克隆