设计模式-原型模式

来源:互联网 发布:网络主播网站排行榜 编辑:程序博客网 时间:2024/05/29 06:41

原型模式:

通过拷贝原型实例,来创建一个新的此种类型的对象。

简单点说就是,通过一个对象实例,创建一个“一摸一样” 的对象实例,但是与原对象是两个不同的对象实例。

那一摸一样作何解释?

因为拷贝又分为浅拷贝和深拷贝,而一摸一样只是所表现出的形式,而实质却有所不同。

浅拷贝:对于非引用类型属性拷贝一副,对于引用类型属性指向原对象的地址。

深拷贝: 引用类型属性也拷贝一份。


我们看清楚的看出区别,对于我们开发来讲,如何这个对象有可能被修改就必须使用深拷贝,以避免因为操作拷贝对象引起原始对象混乱。


代码示例:

浅拷贝:

public class FileObject implements Cloneable{public String name;public List<String> list = new ArrayList<String>();@Overrideprotected Object clone() throws CloneNotSupportedException {FileObject fileObject = (FileObject) super.clone();return super.clone();}}
深拷贝:

public class FileObject implements Cloneable{public String name;public ArrayList<String> list = new ArrayList<String>();@Overrideprotected Object clone() throws CloneNotSupportedException {FileObject fileObject = (FileObject) super.clone();fileObject.list = (ArrayList<String>) this.list.clone();return fileObject;}}

值得注意的是:

通过拷贝产生一个新对象的时候,构造方法不用被调用。

而且复杂情况下通过拷贝产生对象才会加快效率,如果一个普通的,创建不耗时的对象通过clone来生成一个新对象未必比直接new快。

0 0
原创粉丝点击