慢慢的做記錄,做最強大的自己 看了大話設計模式之後感觸很深,發現自己還有很多學習的東西,設計軟體並不是一兩句代碼把功能寫完了就行,需要思考的內容有很多 代碼來源參考大話設計模式這本書,這裡在博客里記錄一下,不可能每次都去翻書,但是在博客裡面是非常好找的。 範例為一個簡單工廠模式的計算器,首先先創建一 ...
慢慢的做記錄,做最強大的自己
看了大話設計模式之後感觸很深,發現自己還有很多學習的東西,設計軟體並不是一兩句代碼把功能寫完了就行,需要思考的內容有很多
代碼來源參考大話設計模式這本書,這裡在博客里記錄一下,不可能每次都去翻書,但是在博客裡面是非常好找的。
範例為一個簡單工廠模式的計算器,首先先創建一個計算器運算所需要用到的數據模型,在java裡面也叫bean,就是一個抽象的類,這裡我們先創建一個Operation類
public class Operation { private double _numberA = 0; private double _numberB = 0; public double NumberA { get { return _numberA; } set { _numberA = value; } } public double NumberB { get { return _numberB; } set { _numberB = value; } } public virtual double GetResult() { double results = 0; return results; } }
然後再創建加減乘除類,以便工廠進行調用
class OperationAdd : Operation { public override double GetResult() { double result = 0; result = NumberA + NumberB; return result; } } class OperationSub : Operation { public override double GetResult() { double result = 0; result = NumberA - NumberB; return result; } } class OperationMul : Operation { public override double GetResult() { double result = 0; result = NumberA * NumberB; return result; } } class OperationDiv : Operation { public override double GetResult() { double result = 0; result = NumberA / NumberB; return result; } }
創建工廠類,實例化出合適的對象
public static Operation CreateOperate(string operate) { Operation oper = null; switch (operate) { case "+": oper = new OperationAdd(); break; case "-": oper = new OperationSub(); break; case "*": oper = new OperationMul(); break; case "/": oper = new OperationDiv(); break; } return oper; }
通過多態,返回父類的方式,然後實現計算結果
static void Main(string[] args) { Operation oper; oper = OperationFactory.CreateOperate("+"); oper.NumberA = 1; oper.NumberB = 2; double result = oper.GetResult(); Console.WriteLine(result); Console.ReadLine(); }
但是簡單工廠模式會存在一個問題,後續如果新增方法的話那麼還需要繼續創建運算類,然後實例化對象,那麼這樣會增加代碼結構的複雜度,當然還是有方法解決的,但是這裡就只做簡單工廠模式的介紹了,
三層模型基本上如果不是用了特別的方法那麼基本都是基於簡單工廠模式來處理方法的