架构、框架、模式之轻松掌握设计模式(原型模式)

   好了,到了构建类型模式中的最后一种(当然是GOF)原型模式了。这个模式似乎是被讨论得最少的,原因是在Java中,Object本身便带有clone的方法(当然,它需要使用实现Cloneable接口的方式来激活)。而基于原型的clone也相对比较少的使用(最主要的原因是比较难以确定是深度clone还是浅度clone)。
   我们追溯不了这种模式的起源和ghost有何关系(其实根本就没有任何关系),只是感觉这样的一种模式,在现实生活中又是那么的常见。我们经常在安装好操作系统以及必备的软件后(比如升级包,office等等),将系统用ghost备份一下,这样可以让我们有问题的适合尽快还原。而许多大公司在管理公司机器的时候也是采用统一的clone包,快速安装和恢复系统。这些生活其实也就描述了clone的背景:简单而又能快速地去产生所期望的对象的副本。所期望的对象自然就是原型对象了。
   不过,现实生活中的另外一些例子,也可以给我们另样的思考。我们经常会发现,我们有时候使用clone的系统很不稳定,时不时有死机出问题的情况,而公司进行clone还原也是经常对同样配置的电脑进行操作,甚至不允许修改分区(我们公司的电脑都只有一个C区,哪怕它有200G)。这是为何呢?这便是作为原型存在的另外一种背景,那就是相同的环境。在不同的电脑配置中(只是因为都使用基于X86结构的通用配置,所以问题出现较少,但依然存在),通过镜像而还原的系统往往是不稳定的,因为许多系统环境的配置变了。我们也知道,在原型模式中其实有和实际生活中的clone还有个小小区别,也就是可以控制clone的程度(模式中当然可以通过不同实现来控制对象的深度clone或者浅度clone,而现实生活中往往是完全复制)。我们将这种思考带到原型模式的应用中来说吧。使用原型对象所产生的新对象副本在其使用环境下是否又跟原型对象一致呢?这其实决定了两点,一是我们要进行怎么样的clone实现,二是是否该提供这种模式来创建我们的对象。
   上周有些事情,一直没有写完,也没有更新, 今天继续.....
   原型模式在使用的时候,容易遇到这样的问题和误区: 我们常常希望通过clone的方式降低对象复制的曝光度(对于使用者来说,不需要关心对象是怎么样复制的),但是我们往往忽略了一些因素和条件限制, 第一,内部的状态属性是否具备或者能是否准许被复制? 第二,究竟该做到何种程度的复制?(由对象关联引发出来的对象链究竟是共用还是继续复制?) 而这类问题往往在设计之初是很难预料和估计的.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值