设计模式之Factory method

刚开始一直没搞清楚abstract factory 和factory method有什么区别..因为二者常常混在一起用。再仔细想想:

AF出来的是一个Factory,这个factory可以创造一系列产品。而FM所属对象本身就是一个factory,调用FM函数将产生一个产品。

AF---->Factory(自己可能就提供FM)---->Product。它这个和AF是面向不同层次的,AF更加广泛高一些。当然也可以做一个AF类,而且只有一个createProduct函数(本来一个F可能有createA,createB,createC等等)。

这个是和AF比较来看的角度,从其他的使用的情况看,其实就是FMBase派生FMX,FMY,FMZ等重载create函数,这样就可以做到定制化,而且用户只要FMBase接口即可。(??FMX,FMY,FMZ咋来?看来还是得AF来啊),或者像MFC一样,本身就有FMX类似的对象存在。

具体实现上有一些考究:

1 create函数问题,如果今天有A,明天有B的话,则导致基类也要增加这些接口,不如....通过create(Type)一个函数来指定,基类只能创建A,B,继承类能够创建C,D..等,减少了修改。

2 即使这样也很麻烦,得不断派生类,不如用模板吧,终极方法.注意编写方法,是提供一个模板子类,而基类不是模板类。

注意,面向对象的情况下,不同的product 也是共用一个基类的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值