设计模式之原型模式(创建型)
2022/2/10 23:17:43
本文主要是介绍设计模式之原型模式(创建型),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
概念:
用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。
基于内存二进制流进行复制,不需要再经历耗时的对象初始化过程(不调用构造函数),可以提升性能。
原型模式的使用场景:
1、创建对象成本较大(比如:占用CPU太多,消耗网络资源太多等)。
2、系统中多处使用该类对象,且各个调用者都需要给它的属性重新赋值。
3、创建对象过程比较繁琐(比如数据准备、访问权限等)。
优点:
性能提高。
逃避构造函数的约束。
缺点:
配备克隆方法需要对类的功能进行通盘考虑,这对于全新的类不是很难,但对于已有的类不一定很容易,特别当一个类引用不支持串行化的间接对象,或者引用含有循环结构的时候。
必须实现Cloneable接口。
原型模式UML图:
原型模式类似于现实世界的细胞分裂
代码如下:
public class Prototype<T extends Prototype> implements Cloneable{ public T clone() { T prototype = null; try { prototype = (T)super.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } return prototype; } }
public class ConcretePrototype extends Prototype<ConcretePrototype> { public ConcretePrototype() { System.out.println("构造方法"); } public void show() { System.out.println("原型模式实现类"+this.hashCode()); } }
public class PrototypeDemo { public static void main(String[] args) { ConcretePrototype concretePrototype = new ConcretePrototype(); for(int i=0;i<10;i++) { ConcretePrototype cloneConcretePrototype = concretePrototype.clone(); cloneConcretePrototype.show(); } } }
输出:
构造方法 原型模式实现类685325104 原型模式实现类460141958 原型模式实现类1163157884 原型模式实现类1956725890 原型模式实现类356573597 原型模式实现类1735600054 原型模式实现类21685669 原型模式实现类2133927002 原型模式实现类1836019240 原型模式实现类325040804
深克隆和浅克隆:
浅克隆:只负责克隆按值传递的数据
深克隆:除了浅克隆要克隆的值外,还负责克隆引用类型的数据,基本上所有属性数据都会被克隆出来
原型模式属于深克隆。
这篇关于设计模式之原型模式(创建型)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-19永别了,微服务架构!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?