简单工厂模式(Simple Factory Method)

最近一段时间在学习《大话设计模式》,我觉得这本真的很不错,以下是我学习第一章 简单工厂模式后整理的代码,请大家多指导,小弟刚出炉。

View Code
  1 //运算类
2 public class Operation
3 {
4 private double _numberA=0;
5 private double _numberB=0;
6
7 public double NumberA
8 {
9 set
10 {
11 _numberA=value;
12 }
13 get
14 {
15 return _numberA;
16 }
17 }
18 public double NumberB
19 {
20 set
21 {
22 _numberB=value;
23 }
24 get
25 {
26 return _numberB;
27 }
28 }
29 public virtual double GetResult()
30 {
31 double result=0;
32 return result;
33 }
34 }
35 //加法运算子类
36 public class OperationAdd:Operation
37 {
38 public override double GetResult()
39 {
40 double result=0;
41 result=NumberA+NumberB;
42 return result;
43 }
44 }
45 //减法运算子类
46 public class OperationSub:Opertion
47 {
48 public override double GetResult()
49 {
50 double result=0;
51 result=NumberA-NumberB;
52 return result;
53 }
54 }
55 //乘法运算子类
56 public class OperationMul:Operation
57 {
58 public override double GetResult()
59 {
60 double result=0;
61 result=NuberA*NumberB;
62 return result;
63 }
64 }
65
66 //除法运算子类
67 public class OperationDiv:Operation
68 {
69 public override double GetResult()
70 {
71 double result=0;
72 if(NumberB==0)
73 throw new Exception("除数不能为零");
74 result=NumberA/NumberB;
75 return result;
76 }
77
78 }
79 //简单工厂类
80 public class OperationFactory
81 {
82 public static Operation createOperate(string operate)
83 {
84
85 Operration oper=null;
86 swith(operate)
87 {
88 case "+":
89 oper=new OperationAdd();
90 break;
91 case "-":
92 oper=new OperationSub();
93 break;
94 case "*":
95 oper=new OperationMul();
96 break;
97 case "/":
98 oper=new OperationDiv();
99 break;
100 }
101 return oper;
102
103 }
104
105
106 }
107 //客户端调用代码
108 public class Client
109 {
110 public static void Main(string[] args)
111 {
112 Operation oper;
113 oper=OperationFactory.createOperate("+");
114 oper.NumberA=1;
115 oper.NumberB=2;
116 double result=oper.GetResult();
117
118 }
119 }



posted @ 2012-01-09 09:26  liyijiu  阅读(62)  评论(0编辑  收藏  举报