设计模式(二):简单工厂
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 }
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 }