设计模式之原型模式
2013-12-23 17:36
127 查看
关于原型模式,这个网上的介绍相对于其他,就少很多,也就是意味着,这并不复杂。
因为他是一种创建模式,那么你除了通过new产生对象,有没有办法,再产生一个对象呢?答案就是,原型,类似于你用ctrl+c加ctrl+v的效果,复制粘贴,之后还能对其修改,尽管这个例子不太恰当,可是原型就是通过复制原来的对象,产生一个新的对象,然后,在不影响原来的对象的基础上,进行各种操作,就类似《让子弹飞》中的黄四爷替身,大家把他认为就是黄四爷,一个效果。
如何实现原型?
1.有个抽象类或者接口,去实现clone方法或者Clonable接口。
2.其中有个问题,就是浅拷贝和深拷贝,以前看c++遇到这个问题,没相当,java里面也有的,2者最大不同就是,浅拷贝在拷贝引用时,只是拷贝地址依然指向原来的对象,而深拷贝,则可以说是拷贝的一模一样。
3.还有些文章提到了,原型管理器。为什么有这个类?
很简单,当你对同一个对象,拷贝了一大堆时,总有些没用的想删除,或者,还嫌不够,继续添加内容之类的,修改复制过来的对象,所有这些操作必须有这么个管理者来完成。
最后,就是
1.如果浅拷贝,直接继续父类object里面的clone,也就是super,clone(),
2.而深拷贝有个问题就是,嵌套引用,造成循环风险。因此都是把它序列化,转成2进制流,再对其输出复制。
总结
就是说,clone在java里面有风险,不推荐使用,所以,你就很少见到原型的例子,但是作为一种模式,既然经典肯定,还是有其优点,就这么多。
最后,贴个有代码的地址,去看看
1./article/2811168.html
2./content/2573047.html
因为他是一种创建模式,那么你除了通过new产生对象,有没有办法,再产生一个对象呢?答案就是,原型,类似于你用ctrl+c加ctrl+v的效果,复制粘贴,之后还能对其修改,尽管这个例子不太恰当,可是原型就是通过复制原来的对象,产生一个新的对象,然后,在不影响原来的对象的基础上,进行各种操作,就类似《让子弹飞》中的黄四爷替身,大家把他认为就是黄四爷,一个效果。
如何实现原型?
1.有个抽象类或者接口,去实现clone方法或者Clonable接口。
2.其中有个问题,就是浅拷贝和深拷贝,以前看c++遇到这个问题,没相当,java里面也有的,2者最大不同就是,浅拷贝在拷贝引用时,只是拷贝地址依然指向原来的对象,而深拷贝,则可以说是拷贝的一模一样。
3.还有些文章提到了,原型管理器。为什么有这个类?
很简单,当你对同一个对象,拷贝了一大堆时,总有些没用的想删除,或者,还嫌不够,继续添加内容之类的,修改复制过来的对象,所有这些操作必须有这么个管理者来完成。
最后,就是
1.如果浅拷贝,直接继续父类object里面的clone,也就是super,clone(),
2.而深拷贝有个问题就是,嵌套引用,造成循环风险。因此都是把它序列化,转成2进制流,再对其输出复制。
总结
就是说,clone在java里面有风险,不推荐使用,所以,你就很少见到原型的例子,但是作为一种模式,既然经典肯定,还是有其优点,就这么多。
最后,贴个有代码的地址,去看看
1./article/2811168.html
2./content/2573047.html
相关文章推荐
- Java技术_每天掌握一种设计模式(006)_使用场景及简单实例(创建型:原型模式)
- 设计模式学习--原型模式(深复制与浅复制)
- 设计模式(四)原型模式(创建型)
- php设计模式 Prototype (原型模式)
- 设计模式之原型模式(Prototype)
- 设计模式 原型模式(Prototype Pattern)
- 设计模式学习笔记(十三:原型模式)
- c++ 设计模式之原型模式
- 设计模式-prototype原型
- 设计模式之原型模式
- 设计模式---原型模式Prototype(创建型)
- 设计模式从零开始——原型模式
- C#设计模式学习资料--原型模式
- 设计模式之原型模式
- 设计模式——原型模式
- 学习设计模式第八 - 原型模式
- php设计模式 原型模式
- [设计模式]原型模式
- 设计模式之原型模式(Prototype)
- PHP设计模式——原型模式