完美冰蓝

为心爱的人敲十万行代码!

设计模式(二):简单工厂

 

  1     /// <summary>
  2     /// 测试类
  3     /// </summary>
  4     public class test
  5     {
  6         public static void Main(string[] args)
  7         {
  8             Operation op = OperationFactroy.CreatOperate("+");
  9             op.NumberA=1;
 10             op.NumberB=2;
 11             Console.WriteLine(op.GetResult());
 12         }
 13     }
 14     /// <summary>
 15     /// 简单工厂类
 16     /// </summary>
 17     public class OperationFactroy
 18     {
 19         public static Operation CreatOperate(string strOperate)
 20         {
 21             Operation operation = null;
 22 
 23             switch (strOperate)
 24             {
 25                 case "+":
 26                     operation = new AddOperation();
 27                     break;
 28                 case "-":
 29                     operation = new SubOperation();
 30                     break;
 31                 case "*":
 32                     operation = new MulOperation();
 33                     break;
 34                 case "/":
 35                     operation = new DivOperation();
 36                     break;
 37                 default:
 38                     operation = new AddOperation();
 39                     break;
 40             }
 41 
 42             return operation;
 43         }
 44     }
 45 
 46     public class Operation
 47     {
 48         private double _numberA = 0;
 49 
 50         public double NumberA
 51         {
 52             get { return _numberA; }
 53             set { _numberA = value; }
 54         }
 55         private double _numberB = 0;
 56 
 57         public double NumberB
 58         {
 59             get { return _numberB; }
 60             set { _numberB = value; }
 61         }
 62         /// <summary>
 63         /// 虚方法
 64         /// </summary>
 65         /// <returns></returns>
 66         public virtual double GetResult()
 67         {
 68             double result = 0;
 69             return result;
 70         }
 71     }
 72 
 73     public class AddOperation : Operation
 74     {
 75         public override double GetResult()
 76         {
 77             double result = 0;
 78             result = NumberA + NumberB;
 79             return result;
 80         }
 81     }
 82 
 83     public class SubOperation : Operation
 84     {
 85         public override double GetResult()
 86         {
 87             double result = 0;
 88             result = NumberA - NumberB;
 89             return result;
 90         }
 91     }
 92 
 93     public class MulOperation : Operation
 94     {
 95         public override double GetResult()
 96         {
 97             double result = 0;
 98             result = NumberA * NumberB;
 99             return result;
100         }
101     }
102 
103     public class DivOperation : Operation
104     {
105         public override double GetResult()
106         {
107             double result = 0;
108             if (NumberB == 0)
109             {
110                 throw new Exception("对不起,除数不能为零");
111             }
112             result = NumberA / NumberB;
113             return result;
114         }
115     }

 

posted on 2011-09-18 01:03  完美冰蓝  阅读(163)  评论(0编辑  收藏  举报

导航