文章目录
1. 原型模式概述
1.1 什么是原型模式
- 原型模式是指 原型实例指定创建对象的种类,并通过拷贝这些原型创建新的原型(说白了就是将一个对象复制一份)
1.2 原型模式使用的场景
- 类的初始化的时候,消耗的资源太多
- new 构造这个对象的时候,这个过程繁琐
- 构造函数还复杂的一p
2. 什么是深克隆、浅克隆
2.1 浅克隆概念
- 对于数据类型是基本数据类型的成员变量,浅克隆会直接进行值的传递,也就是将该处属性值复制一份给新的对象。
- 对于数据类型是引用数据类型的成员变量,比如说成员变量是某个对象、数组等,那么浅克隆会进行引用的传递,也就是将这个成员变量引用的内存地址赋值给新的对象。那么这么一来,这两个对象中的成员变量就指向了同一个实例。在这种情况下,显然,通过某一个对象操作其成员变量的内容 则会影响到另一个对象的成员变量。
2.2 深克隆概念
- 其基本类型的成员变量跟浅克隆没啥区别
- 对所有引用类型的成员变量在内存中开辟空间,并复制每个引用数据类型成员变量所引用的对象。也就是说。深克隆要对所有的成员变量进行拷贝,其引用数据类型的成员变量看似是一个,其实其内存空间已经不同,是两个对象了。
3. 浅克隆实现
非常简单
- 实现Cloneable接口
- 重新clone方法
3.1 克隆对象代码
- 其内引用类型变量的内容为:
3.2 调用代码(解释在代码中)
也就是直接调用其clone方法即可,就可以复制一份了。
他们的内存地址是不同的。详情看代码注释
4. 深克隆实现
深克隆我这边是使用序列化在反序列化的方式,所以要求都要 实现 序列化接口(Serializable)
4.1 克隆对象代码
- 下面是其内schoolClass 对象对应类的结构:
扫描二维码关注公众号,回复:
12656747 查看本文章
4.2 调用代码(解释在代码中)
5. 总结
总的来说,这个设计模式是用来复制对象的,我这边也就没有给出类图, 这个也是自己记录一下吧。毕竟这个的概念比较好理解,就没有弄类图。