设计模式--工厂方法模式

针对简单工厂模式违背了“开放封闭原则”,不但对扩展开发,也对修改开放的缺点。因此工厂方法很好的解决了这个问题。

工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

结构图:

针对简单工厂模式的“计数器”例子,换成工厂方法后的结构图如下:

工厂方法模式实现时,客户端需要决定实例化哪一个工厂类来实现运算类,选择判断的问题还是存在的,也就是说,工厂方法把简单工厂的内部逻辑判断移到了客户端代码来进行。你想要加功能,本来是改工厂类,而现在是修改客户端

 结构图:

代码如下:

1 工厂接口:
2 
3 interface IFactory
4 {
5   Operation CreateOperation();
6 }

加减乘除各建一个工厂去实现这个接口

1 //加法工厂
2 class AddFactory:IFactory
3 {
4   public Operation CreateOperation()
5   {
6     return new OperationAdd();
7   }
8 }
1  //减法工厂
2  class SubFactory:IFactory
3  {
4    public Operation CreateOperation()
5    {
6      return new OperationSub();
7    }
8  }

其他略。

1 客户端代码:
2 IFactory operFactory=new AddFactory();
3 Operation oper=operFactory.CreateOperation();
4 oper.NumberA=1;
5 oper.NumberB=2;
6 double result=oper.GetResult();

 

 

posted on 2014-06-03 13:40  BKYJungle  阅读(90)  评论(0)    收藏  举报