设计模式之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 也是共用一个基类的。
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 也是共用一个基类的。
相关文章推荐
- 23种设计模式之-----工厂方法模式(Method Factory pattern)
- 设计模式 工厂方法(Factory Method Pattern)转载
- .NET设计模式(5):工厂方法模式(Factory Method)
- 结合Android学设计模式--工厂方法(FactoryMethod)
- 浅谈JAVA设计模式之——工厂方法(FactoryMethod)
- 设计模型之创建型模式之工厂方法模式(Factory Method)
- 设计模式之 - 工厂方法模式 (Factory Method design pattern)
- 【设计模式】——工厂方法FactoryMethod
- 【设计模式攻略】创建型模式之Factory method模式
- 设计模式第二篇 工厂模式(2) 工厂方法模式 factory method
- java设计模式之一工厂模式(Factory Method)
- java设计模式之一工厂模式(Factory Method)
- java设计模式之一工厂模式(Factory Method)
- 设计模式之工厂方法模式(Factory Method)
- 设计模式笔记-创建型模式之三--工厂方法:Factory Method
- 设计模式之一---工厂方法模式【Factory Method模式】 (java版)
- 设计模式(2)-对象创建型模式-Factory Method模式
- 在 Java 中应用设计模式 - Factory Method
- 设计模式 (二)工厂方法模式(FactoryMethod)
- 学习笔记系列之NET设计模式(3):工厂方法(Factory Method)