原型模式

面临问题:在软件系统中,有时候面临的产品类是动态变化的,而且这个产品类具有一定的等级结构。那么如何封装这种动态的变化?

我要填写很多表格,这些表格只有姓名不一样,其他都一样,也就是这个产品类具有一定的等级结构。但是里面的属性是动态变化的,例如姓名。我就想怎么样才能创建这种对象?

解决方案:以一个已有的对象作为原型,通过它来创建新的对象。在增加新的对象的时候,新对象的细节创建工作由自己来负责,从而使新对象的创建过程与框架隔离开来

例如:孙悟空可以根据自己的形象,复制出很多"身外身"来。然后可以对每个身外身进行修改,这样就能很方便的创建出满足需求的对象。



什么情况下使用原型模式?


假设一个系统的产品类是动态加载的,而且产品类具有一定的等级结构。这时如果采取工厂模式的话,工厂类就不得不具有一个相应的等级结构。而产品类的
等级结构一旦变化,工厂类的等级结构就不得不有一个相应的变化。这对于产品结构可能会有经常性变化的系统来说,采用工厂模式就不太方便。


Why not use “new”?


如果你有一个对象,有着复杂的状态。你希望得到另一个拷贝,但是同时具有一模一样的状态,如果选择从头创建一个新的对象,你将不得不重新一个一个地设臵这些状态。有的时候这很麻烦,有的时候这不可能做到。这种时候,使用原型模式,调用一个克隆方法,就变成非常好的办法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值