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

- 来自: 珠海

- 详细资料
搜索本博客
最近加入圈子
链接
最新评论
-
VO , 我们不需要么?
我曾经在不了解这些概念之前就已经用到VO了,不过后来发现这样也挺麻烦的。我一直用 ...
-- by czwlucky -
这两天收获不小
商业决定一切,客户决定一切有道理,不过作为对于技术有信仰般追求的人来说这话还是可 ...
-- by 大地之子 -
赶紧换回我以前比较老实的 ...
呵呵,其实前面那一张也不错。都放在你的相册里面吧。
-- by ouspec -
这两天收获不小
见过林锐后才知道,原来真有人的思维比普通人快好几倍.
-- by wolfsquare -
赶紧换回我以前比较老实的 ...
我支持你这张照片,青春灵气,哈哈
-- by eyejava






评论排行榜