正如其名,簡單工廠,比較簡單,直接給出一個計算器的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(); }