C#学习笔记-工厂模式

题目:计算器

解析:工厂方法(Factory Method),定义一个用于创建对象的接口,让子类决定实例化哪一个类。

定义运算类:

 1 class Operation
 2     {
 3         private double _numberA = 0;
 4         private double _numberB = 0;
 5 
 6         public double NumberA
 7         {
 8             get
 9             {
10                 return _numberA;
11             }
12 
13             set
14             {
15                 _numberA = value;
16             }
17         }
18 
19         public double NumberB
20         {
21             get
22             {
23                 return _numberB;
24             }
25 
26             set
27             {
28                 _numberB = value;
29             }
30         }
31 
32         public virtual double GetResult()
33         {
34             double result = 0;
35             return result;
36         }
37     }
View Code

继承于运算类的具体运算的实现:

 1 class OperationAdd : Operation
 2     {
 3         public override double GetResult()
 4         {
 5             double result = 0;
 6             result = NumberA + NumberB;
 7             return result;
 8         }
 9     }
10 
11     class OperationSub : Operation
12     {
13         public override double GetResult()
14         {
15             double result = 0;
16             result = NumberA - NumberB;
17             return result;
18         }
19     }
20 
21     class OperationMul : Operation
22     {
23         public override double GetResult()
24         {
25             double result = 0;
26             result = NumberA * NumberB;
27             return result;
28         }
29     }
30 
31     class OperationDiv : Operation
32     {
33         public override double GetResult()
34         {
35             double result = 0;
36             if (NumberB == 0)
37                 throw new Exception("除数不能为0");
38             result = NumberA / NumberB;
39             return result;
40         }
41     }
View Code

工厂方法,接口:

1 interface IFactory
2     {
3         Operation CreateOperation();
4     }
View Code

工厂方法,分别子类:

 1 class AddOperation : IFactory
 2     {
 3         public Operation CreateOperation()
 4         {
 5             return new OperationAdd();
 6         }
 7     }
 8 
 9     class SubOperation : IFactory
10     {
11         public Operation CreateOperation()
12         {
13             return new OperationSub();
14         }
15     }
16 
17     class MulOperation : IFactory
18     {
19         public Operation CreateOperation()
20         {
21             return new OperationMul();
22         }
23     }
24 
25     class DivOperation:IFactory
26     {
27         public Operation CreateOperation()
28         {
29             return new OperationDiv();
30         }
31     }
View Code

主函数:

 1 static void Main(string[] args)
 2         {
 3             //工厂模式自己内部确定了改实例化哪个类,所以要发生变动,只需要在最外面这个地方变动即可
 4             IFactory operFactory = new AddOperation();
 5 
 6             Operation oper = operFactory.CreateOperation();
 7             oper.NumberA = 9;
 8             oper.NumberB = 5;
 9             double result = oper.GetResult();
10 
11             Console.WriteLine(result);
12 
13             Console.Read();
14         }
View Code

 

 

注:文中所有代码及知识点均来自于《大话设计模式》,本人属于边学边看边敲代码边总结的阶段。

posted @ 2017-09-08 14:09  多多陪着小五  阅读(315)  评论(0编辑  收藏  举报