设计模式--简单工厂模式

1:模式讲解

1)简单工厂模式

例:加减乘除计数器

代码:

Operation运算类

 1 Operation运算类
 2 
 3 public class Operation
 4 
 5 {
 6   private double _numberA=0;
 7   private double _numberB=0;
 8   public  double NumberA
 9   {
10     get{ return _nubmerA; }
11     set{ _nubmerA=value; }
12   }
13   public double NumberB
14   {
15     get{ return _nubmerB; }
16     set{ _nubmerB=value; }
17   }
18      public virtual double GetResult()
19     {
20         dobule result=0;
21         return result;
22      }
23 }

加减乘除类

加法类:

 1 加法类:
 2 public OperationAdd:Operation
 3 {
 4   public virtual double GetResult()
 5   {
 6     double result  =0;
 7     result=NumberA+NumberB;
 8     return result;
 9   }
10 }

减法类:

 1 减法类:
 2 
 3 public OperationSub:Operation
 4 {
 5   public virtual double GetResult()
 6   {
 7     double result  =0;
 8     result=NumberA-NumberB;
 9     return result;
10   }
11 }

乘、除类:略

简单运算工厂类

 1 简单运算工厂类
 2 public class OperationFactory
 3 {
 4   public static Operation createOperation(string operate)
 5   {
 6     Operation oper=null;
 7     switch(operate)
 8     {
 9       case "+":
10         oper=new OperationAdd();
11         break;
12       case "=":
13         oper=new OperationSub();
14         break;
15       略
16     }
17     return oper;
18   }
19 }

客户端代码

1 客户端代码
2 Operation oper;
3 oper=OperationFactory.createOperate("+");
4 oper.NumberA=1;
5 oper.NumberB=2;
6 double result=oper.GetResult();

 

结构图:

 

优点:封装了各算法,修改其中一个算法不会影响到其他几个算;并且把业务和界面分离,做到了松耦合。

缺点:简单工厂模式只是解决了对象的创建问题,而且工厂本身包括了所有的算法。面对算法的时常改动,不适合使用简单工厂模式。

posted on 2014-06-03 14:12  BKYJungle  阅读(148)  评论(0)    收藏  举报