文章出處
文章列表
在今天,讀書有時是件“麻煩”事。它需要你付出時間,付出精力,還要付出一份心境。--僅以《大話設計模式》來祭奠那逝去的……
簡單工廠的作用是實例化對象,不需要客戶了解這個對象屬于哪個具體子類。簡單工廠實例化的類具有相同的接口或者基類,在子類相對固定或者不需要擴展的時候,可以使用簡單工廠。如數據庫生產工廠就可以使用簡單工廠來實現。
1.簡單的計算器實現
輸入兩個數和運算符,實現兩數相加或者兩數相減。
首先我們定義一個運算類,包含兩個屬性:數字A和數字B,還有一個獲取結果的虛方法GetResult方便獲取運算結果
/// <summary> /// 運算類 /// </summary> public class Operation { public double NumberA { get; set; } public double NumberB { get; set; } public virtual double GetResult() { var result = 0; return result; } }
然后我們編寫加法運算和減法運算類,讓其集成運算類,重寫GetResult類實現不同的運算結果(如果我們以后要增加其他運算方法,只需要新增一個繼承Operation的運算類,而無需變動已經寫好的加法和減法運算類)
/// <summary> /// 加法運算 /// </summary> public class OperationAdd : Operation { public override double GetResult() { return this.NumberA + this.NumberB; } } /// <summary> /// 減法運算 /// </summary> public class OperationSub : Operation { public override double GetResult() { return this.NumberA - this.NumberB; } }
定義一個簡單運算工廠,到底要實例化誰,將來是否要新增實例化對象,比如除法、乘法等。這些都交給簡單運算工廠來實現,以后若有變化要動也只需要改動工廠這塊就好了,而不是整個項目去搜索一遍實例化運算類的代碼
/// <summary> /// 簡單運算工廠 /// </summary> public class OperationFactory { public static Operation CreateOperation(string operate) { Operation oper = null; switch (operate) { case "+": oper = new OperationAdd(); break; case "-": oper = new OperationSub(); break; } return oper; } }
文章列表
全站熱搜