01、简单工厂模式(Factory)

设计模式序言:这是开始学习设计模式的第一步,也是相对简单的一个设计模式,简单工厂设计模式。

一、概念:

  简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。

 

  简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,

 

  可以理解为是不同工厂模式的一个特殊实现。

二、图解:

                        

三、编码

1、 建立父类  

 1 //父类
 2     public class Option
 3     {
 4         private double number_01;
 5         public double Number_01 { get; set; }       //第一个数
 6 
 7         private double number_02;
 8         public double Number_02 { get; set; }     //第二个数
 9 
10         public virtual double GetResult()       //这是一个抽象的方法,用来被之类重写
11         {
12             double result = 0;
13             return result;
14         }
15     }

2、创建工厂中的对象:(我这里是用了计算器的例子,就创建4个   + - * /)

 1     //加号类:
 2     public class AddOption:Option
 3     {
 4         public override double GetResult()
 5         {
 6             double result = 0;
 7             result = Number_01 + Number_02;
 8             return result;
 9         }
10     }
11 
12     //减号类:
13     public class SubOption:Option
14     {
15         public override double GetResult()
16         {
17             double result = 0;
18             result = Number_01 - Number_02;
19             return result;
20         }
21     }
22 
23     //乘号类:
24     public class MultiplyOption:Option
25     {
26         public override double GetResult()
27         {
28             double result = 0;
29             result = Number_01 * Number_02;
30             return result;
31         }
32     }
33 
34     //除号类:
35     public class DivideOption:Option
36     {
37         public override double GetResult()
38         {
39             double result = 0;
40             if (Number_02 == 0)
41                 throw new Exception("除数不能为0");
42             result = Number_01 / Number_02;           
43             return result;
44         }
45     }

3、创建简单工厂的核心,简单工厂类:

 1     public class OptionFactory
 2     {
 3         public static Option CreateOption(string option)
 4         {
 5             Option oper = null;
 6             switch (option)
 7             {
 8                 case "+":
 9                     oper = new AddOption();
10                     break;
11                 case "-":
12                     oper = new SubOption();
13                     break;
14                 case "*":
15                     oper = new MultiplyOption();
16                     break;
17                 case "/":
18                     oper = new DivideOption();
19                     break;
20             }
21 
22             return oper;
23         }
24     }

4、到这里,简单工厂就已经完成了,调用即可。

 1         static void Main(string[] args)
 2         {
 3             Option oper;
 4             oper = OptionFactory.CreateOption("+");
 5             oper.Number_01 = 10;
 6             oper.Number_02 = 25;
 7             double result = oper.GetResult();
 8             Console.WriteLine(  result);
 9             Console.ReadLine();
10         }

附:上述代码的结构图。

                  

5、总结:

原文地址:https://www.cnblogs.com/zhh19981104/p/7941756.html