发布于: 2022-10-30最后更新: 2022-11-14字数 612阅读时长 2 分钟

type
Post
status
Published
date
Oct 30, 2022
slug
prototype-design-pattern-of-creation-pattern
summary
tags
原型
category
设计模式
icon
password
 

一、原型模式介绍

 
如果对象的创建成本比较大,而同一个类的不同对象之间差别不大(大部分字段都相同),在这种情况下,我们可以利用对已有对象(原型)进行 复制或克隆 的方式来创建新对象,以达到节省创建时间的目的。这种基于原型来创建对象的方式就叫作原型设计模式(Prototype Design Pattern),简称原型模式。
 
对象的创建成本比较大是什么意思?
 
  1. 创建对象包含的申请内存、给成员变量赋值这一过程,本身并不会花费太多时间,或者说对于大部分业务系统来说,这点时间完全是可以忽略的。应用一个复杂的模式,只得到一点点的性能提升,这就是所谓的过度设计,得不偿失。
  1. 但是,如果对象中的数据需要经过复杂的计算才能得到(比如排序、计算哈希值),或者需要从 RPC、网络、数据库、文件系统等非常慢速的 IO 中读取,这种情况下,我们就可以利用原型模式,从其他已有对象中直接拷贝得到,而不用每次在创建新对象的时候,都重复执行这些耗时的操作。
 

二、原型模式实现

 
 

浅拷贝

 
  • 基本类型为值拷贝
  • 引用类型为引用拷贝,只拷贝一份引用
顶层父类 Object.clone() 方法就是浅拷贝!
 

深拷贝

 
  • 基本类型为值拷贝
  • 引用类型为创建新对象进行值拷贝,若有嵌套进行递归拷贝
 
深拷贝实现方式:
  1. 每个子对象都实现 Cloneable 接口,并重写clone方法。在最顶层的类的重写的 clone 方法中调用所有子对象的 clone 方法即可实现深拷贝。(人话:引用类型内部都是基本类型构成)
  1. 使用序列化机制,先对对象进行序列化,紧接着马上反序列化出。
 
序列化代码例子:
 

Loading...
结构型模式之代理设计模式

结构型模式之代理设计模式


创建型模式之建造者设计模式

创建型模式之建造者设计模式