广义factory

 工厂生产一种产品,其实new也是一个工厂,GoF里还对工厂有更细的划分,但是,这给人的感觉是工厂是从无到有的,其实不是这样,工厂也可以从有到有。

new是一个工厂,它生成的是初级产品。对于一个初级产品来说,你可能想让它个性化,譬如每个学生都有自己的名字,学生都一样,但是用学生产生带名字的学生的过程也是一次工厂作用。

ACE_SOCK_Acceptor和ACE_SOCK_Connector就是这样的工厂。

工厂是用来生成产品的,但是一个工厂未必肯定有机会生产出产品,这对从无到有的工厂来说好理解,我们未调用它而已。对于从有到有的工厂,情况也一样,譬如一个生成带名字学生的工厂,当它得到一个名字信息的时候,才对传递而来的初产品进行加工。如果它永远也没有得到名字信息,这个和永远也没有被调用一样。

这也是ace的这两个工厂给我的启示。

由此可以思考广义的工厂,并试图对是工厂的情况有规范化的工厂予以改造。

譬如new工厂,把new做封装制成GoF的工厂会获得不错的维护优势。对传递引用获取数据的操作,把它做二次加工工厂来考虑也是个不错的想法,尤其当这个被传递的数据是一个对象或结构的时候,用工厂的思想同样可以让你在维护阶段受益。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值