三论GProductCreator和FactoryUsingPointer

我c/c++版发表了这篇文章的第(一)(二)两部分,现在我把它的第三部分发表到c/c++,vc++,设计模式,类库及组件版,因为我发觉这两个东西和这些版块都有关联,同时它们也值得让更多人了解。 我很郁闷我发出去的文章居然没有一个换行`_`,给大家阅读带来极大不便只能说sorry(也代管理员说sorry)./n///n/n 我昨天晚上发现,利用GAbstractCreator和GProductCreator可以很容易实现Abstract Factory模式,只需要几组#define,所以我可以说,我们现在拥有了一个抽象工厂自动生成器!假设GOject, TObject是两个继承体系的基类,GTank,GBullet,GBomb继承自GObject,而TTank,TBullet,TBomb继承自TObject那么我可以定义一个抽象工厂,只用namespace和#define! namespace ConcreteFactroyG { #define createTank GProductCreator (); #define createBullet GProductCreator (); #define createBomb GProductCreator (); } namespace ConcreteFactroyT { #define createTank GProductCreator (); #define createBullet GProductCreator (); #define createBomb GProductCreator (); } 不同的工厂做不同系列的产品,这句话大约体现了抽象工厂的本质,你在这里清晰的看到了这种本质。Loki的抽象工厂提供了更好的灵活性,但是太过于复杂难于看懂(呵呵,我也没看全懂),而且它似乎没有提供CreatePolicy,所有的产品一律用new生成,然而在上面的抽象工厂中,你可以为任何产品定制一个creator(为GProductCreator提供第三个参数)。根本不需要AbstractFactory,但是后面我们将会看到,AbstractFactory是有用的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值