浅析原型模式

原型模式(Prototype)属于对象的创建模式,通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。这就是原型模式的用意。
     java语言的构件模型直接支持原型模式。所有的JavaBean都继承自java.lang .Object,而Object类提供一个clone()方法,可以将一个JavaBean对象复制一份。但是,这个JavaBean必须实现一个标识接口Cloneable,表明这个JavaBean支持复制。

java.lang.Object.clone()方法:
java语言的所有类都是从java.lang.Object类继承而来的,而Object类提供下面的方法对对象进行复制:
protected Object clone();
子类也可以将该方法置换掉,提供满足自己需要的复制方法。对象的复制有一个基本问题,就是对象通常都有对其他对象的引用。当使用Object类的clone()方法来复制一个对象时,此对象对其他对象的引用也同时会被复制一份。
java语言提供的Cloneable接口只起一个作用,就是在运行时期通知java虚拟机可以安全的在这个类上使用clone()方法。通过调用这个clone()方法可以得到一个对象的复制。由于Object类本身并不实现Cloneable接口,因此如果所考虑的类没有实现Cloneable接口时,调用clone()方法会抛出CloneNotSupportedException异常。


原型模式的实现方式:
1、浅复制:被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用都仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。
2、深复制:被复制对象的所有的变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,深复制把要复制的对象所引用的对象都复制了一遍,而这种对被引用到的对象的复制叫做间接复制。

原型模式的优缺点:
1、原型模式允许动态的增加或减少产品类。
2、原型模式提供简化的创建结构
3、具有给一个应用软件动态加载新功能的能力。
4、产品类不需要非得有任何事先确定的等级机构,因为原型模式适用于任何等级机构。
缺点:每个类必须配备一个克隆方法。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值