设计模式-05-原型模式

77 阅读1分钟
> 简称复制黏贴
> 使用场景
    
    创建了一个很复杂的对象,为了避免重复创建的工作量,对其进行克隆,使用原型模式;

cloneable接口 clone() --》object类

实现步骤
    1. 实现一个接口   cloneable接口
    2. 重写一个方法    重写override方法

这个只是实现一个浅拷贝,下面会议一下什么是浅拷贝和深拷贝

如果拷贝的对象里的元素只有值,没有引用,那浅拷贝和深拷贝没有差别,都会将原有对象复制一份,产生一个新对象,对新对象里的值进行修改不会影响原有对象,新对象和原对象完全分离开。

  如果拷贝的对象里的元素包含引用(像一个列表里储存着另一个列表,存的就是另一个列表的引用),那浅拷贝和深拷贝是不同的,浅拷贝虽然将原有对象复制一份,但是依然保存的是引用,所以对新对象里的引用里的值进行修改,依然会改变原对象里的列表的值,新对象和原对象完全分离开并没有完全分离开。而深拷贝则不同,它会将原对象里的引用也新创建一个,即新建一个列表,然后放的是新列表的引用,这样就可以将新对象和原对象完全分离开。

算了 我还是用不惯 这个画图的东西;

image.png

区别主要是在引用类型的对象上

image.png

深克隆的实现方法

  • 系列化,反序列化
  • 改造克隆方法