设计模式之原型模式

来源:互联网 发布:配置网络 ubuntu 编辑:程序博客网 时间:2024/05/01 15:25

关于原型模式,这个网上的介绍相对于其他,就少很多,也就是意味着,这并不复杂。

因为他是一种创建模式,那么你除了通过new产生对象,有没有办法,再产生一个对象呢?答案就是,原型,类似于你用ctrl+c加ctrl+v的效果,复制粘贴,之后还能对其修改,尽管这个例子不太恰当,可是原型就是通过复制原来的对象,产生一个新的对象,然后,在不影响原来的对象的基础上,进行各种操作,就类似《让子弹飞》中的黄四爷替身,大家把他认为就是黄四爷,一个效果。

如何实现原型?

1.有个抽象类或者接口,去实现clone方法或者Clonable接口。

2.其中有个问题,就是浅拷贝和深拷贝,以前看c++遇到这个问题,没相当,java里面也有的,2者最大不同就是,浅拷贝在拷贝引用时,只是拷贝地址依然指向原来的对象,而深拷贝,则可以说是拷贝的一模一样。

3.还有些文章提到了,原型管理器。为什么有这个类?

很简单,当你对同一个对象,拷贝了一大堆时,总有些没用的想删除,或者,还嫌不够,继续添加内容之类的,修改复制过来的对象,所有这些操作必须有这么个管理者来完成。


最后,就是

1.如果浅拷贝,直接继续父类object里面的clone,也就是super,clone(),

2.而深拷贝有个问题就是,嵌套引用,造成循环风险。因此都是把它序列化,转成2进制流,再对其输出复制。

总结

就是说,clone在java里面有风险,不推荐使用,所以,你就很少见到原型的例子,但是作为一种模式,既然经典肯定,还是有其优点,就这么多。

最后,贴个有代码的地址,去看看

1.http://blog.csdn.net/chmask/article/details/2631485

2.http://zz563143188.iteye.com/blog/1847029

0 0