原型模式(浅克隆和深克隆)笔记

什么是原型模式

原型模式也称为克隆模式,可以在不知道对象创建过程的情况下复制出一个新的对象。

克隆方式分为浅克隆和深克隆。

怎么实现原型模式

Object类中有一个clone()方法,所以要使用原型模式非常简单,只要实现Cloneable的接口就可以了。 
Java语言提供的Cloneable接口只起一个作用,就是在运行时期通知Java虚拟机可以安全地在这个类上使用clone()方法。通过调用这个clone()方法可以得到一个对象的复制。由于Object类本身并不实现Cloneable接口,因此如果所考虑的类没有实现Cloneable接口时,调用clone()方法会抛出CloneNotSupportedException异常。

浅克隆

克只负责克隆按值传递的数据(比如基本数据类型、String类型),而不复制它所引用的对象,换言之,所有的对其他对象的引用都仍然指向原来的对象。

深克隆

复制对象的所有属性,复制出来的新对象和原对象指向两个不同的实例,既经过深克隆的对象,会在内存中生成一个新的实例。深克隆的实现方式:通过序列化写入流中,再反序列化生成一个新的对象。

优缺点

优点:

1.可以不需要知道对象的创建过程,直接快速创建出新对象。这点对于初始化过程复杂的对象,十分有效。

缺点:对象的复制有时相当的复杂。特别是当一个类引用不支持序列化的间接对象,或者引用含有循环结构的时候。

代码参考:https://github.com/biggirlo/study/tree/dev/src/main/java/com/biggirlo/design/prototype

发布了23 篇原创文章 · 获赞 19 · 访问量 1425

猜你喜欢

转载自blog.csdn.net/u012335601/article/details/87868104
今日推荐