原型模式 Prototype Pattern¶
更新日期:2022-6-1
- 2022-6-1:更新格式
使用Java。此模式主要靠clone方法实现。
原型模式的定义¶
Specify the kinds of objects to create using a prototypical instance, and create new objects by copying this prototype.
核心方式就是复制(clone)
优点¶
- 性能优良。比直接new一个对象要好。
- 逃避构造函数的约束(也可能是缺点)。直接在内存中clone,不会执行构造函数。
使用场景¶
- 资源优化场景。类初始化需要消耗非常多的资源时,比如数据、硬件等
- 性能和安全有要求。new一个对象需要繁琐的数据准备或访问权限时,可使用此模式
- 一个对象多个修改者的场景
注意事项¶
构造函数不会执行¶
Object类的clone方法的原理是从内存中(堆内存)以二进制流的方式进行拷贝, 重新分配一个内存块。
浅拷贝和深拷贝¶
Object提供的clone方法只拷贝本对象,对象内部的数组、引用对象等都不拷贝,还是指向
原生对象的内部元素地址。称之为“浅拷贝”。
深拷贝是指将类的私有变量也进行了独立的拷贝。
浅拷贝和深拷贝建议不要混合使用。
原型模式先产生出一个包含大量共有信息的类,然后可以拷贝出副本,修正细节信息,建立了一个完整 的个性对象。
参考: 《设计模式之禅》 秦小波
本站说明
一起在知识的海洋里呛水吧。广告内容与本站无关。如果喜欢本站内容,欢迎投喂作者,谢谢支持服务器。如有疑问和建议,欢迎在下方评论~