设计模式04-原型模式

原型模式

如果对象的创建成本很大,而同一个类的不同对象之间差别不大(大部分属性字段相同),这种情况下我们可以根据已有对象(原型)进行复制(或拷贝)的方式来创建新的对象,以达到节省创建时间的目的,基于原型来创建对象的设计方式叫做原型设计模式(Prototype Design Pattern)

原型模式的应用场景

创建对象的成本比较大:对象的属性需要消耗资源去计算才能得到(比如排序、哈希、IO读取)

原型模式的使用方式

  • 浅拷贝:只会拷贝对象中的基本数据类型
  • 深拷贝:方法1.递归拷贝依赖的对象 方法2.通过序列化

使用案例

  • 大的集合对象设计到并发读写时,可以考虑使用原型模式并结合CopyOnWrite

注意事项

  • 多数情况下推荐使用深拷贝
  • 在深拷贝代价比较大的情况下推荐使用浅拷贝,没有必要为了一点点性能的提升而使用浅拷贝,造成不必要的数据共享问题(很难排查)Copy On Write

常见的原型模式应用举例

BeanUtils

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 建造者模式 Builder模式,建造者模式、构建者模式或者生成器模式。 为什么需要建造者模式? 有了构造方法,为什...
    MetaYoo阅读 131评论 0 0
  • 时间过得很快,转眼之间4个月的线上学习+一周的线下课程(实际课程为4天3夜)全都结束了。在10月30号早上离开酒店...
    阿睿_zhangsir阅读 5,876评论 0 1
  • 1.1 Vue新建项目语法 基本语法: vue.js引入 [http://127.0.0.1:3334/md/?d...
    神秘码农阅读 343评论 0 1
  • 前言 唉,说是Java开发,其实写的最多的还是SQL,搞得我有点迷啊,我这是SQL工程师吧。。。。不说了,还是写一...
    Fengx阅读 269评论 0 1
  • 1.1、Vue组件注册 注册vue组件的步骤:创建组件构建器 注册组件 使用组件。 总结: 创建组件的基本步骤: ...
    神秘码农阅读 416评论 0 1