正如其名,简单工厂,比较简单,直接给出一个计算器的demo(能够参见大话设计模式,按照本身的想法写的,有些许不一样)设计模式
1。 工厂中咱们的switch也能够写到配置文件中,经过反射的方式建立操做对象。mvc
例如:<add key="+" operation="加法operation的程序集">ide
使用工厂的核心:能够封装易变的部分到工厂中,外界通常使用基类对象或接口,来达到依赖致使的目的。设计
系统代码中有不少地方都是经过工厂方式建立的。对象
好比运行时中Application对象,blog
好比,mvc中的controller的建立是经过 ControllerFactory建立的。这样的例子很是多。接口
工厂模式,只不过再简单工厂的基础奖,增长了一个工厂的接口,每个对象都对应一个工厂,其实本质都是简单工厂的变形。string
咱们只要记住使用工厂的核心:封装变化,依赖倒置 就能抓住其精髓所在。it
public abstract class Operation { public abstract double GetOperaterResult(double num1, double num2); } public class Add : Operation { public override double GetOperaterResult(double num1, double num2) { return num1 + num2; } } public class Sub : Operation { public override double GetOperaterResult(double num1, double num2) { return num1 - num2; } } public class Mul : Operation { public override double GetOperaterResult(double num1, double num2) { return num1*num2; } } public class Div : Operation { public override double GetOperaterResult(double num1, double num2) { if (num2.Equals(0)) { throw new DivideByZeroException(); } else { return num1/num2; } } }
public static Operation CreateOperation(string op) { Operation operation = null; switch (op) { case "+": operation=new Add(); break; case "-": operation=new Sub(); break; case "*": operation=new Mul(); break; case "/": operation=new Div(); break; default: break; } return operation; }
static void Main(string[] args) { double num1 = 3.6; double num2 = 1.43; double res = SimpleFactory.CreateOperation("*").GetOperaterResult(num1, num2); Console.WriteLine(res); Console.ReadKey(); }