设计模式序言:这是开始学习设计模式的第一步,也是相对简单的一个设计模式,简单工厂设计模式。
一、概念:
简单工厂模式是属于创建型模式,又叫做静态工厂方法(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 }
附:上述代码的结构图。