1. 定义

设计模式(八):原型模式

使用场景
设计模式(八):原型模式
当直接创建对象的代价比较大时,则采用这种模式 。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。

优点
设计模式(八):原型模式
缺点
设计模式(八):原型模式

2. 克隆一个类

实现一个mail类,重写clone方法
设计模式(八):原型模式
写一个mailutil工具类
设计模式(八):原型模式
主函数:克隆10次mail类
设计模式(八):原型模式
结果
设计模式(八):原型模式

3. 深克隆和浅克隆

3.1 概念

克隆就是复制一个对象的复本.但一个对象中可能有基本数据类型,如:int,long,float等,也同时含有对象数据类型如(数组,集合等)。

浅拷贝(浅克隆)复制出来的对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。

深拷贝(深克隆)复制出来的所有变量都含有与原来的对象相同的值,那些引用其他对象的变量将指向复制出来的新对象,而不再是原有的那些被引用的对象。换言之,深复制把要复制的对象所引用的对象都复制了一遍。

3.2 浅克隆

初始化一个类pig
设计模式(八):原型模式
修改pig1的时间属性,pig2的时间属性也发生变化
设计模式(八):原型模式

3.3 深克隆

设计模式(八):原型模式
测试:
设计模式(八):原型模式

4. 克隆破坏单例

4.1 克隆破坏单例

HungrySingleton饿汉单例模式重写cloneable中的clone方法
设计模式(八):原型模式
克隆创建和HungrySongleton和原来的不同
设计模式(八):原型模式

4.2 解决克隆破坏单例

设计模式(八):原型模式
源码:https://github.com/LUK-qianliu/design_pattern_in_all

相关文章: