您的位置:首页 > 其它

设计模式之Factory method

2010-07-15 21:00 155 查看
刚开始一直没搞清楚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 也是共用一个基类的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: