文章出處

在今天,讀書有時是件“麻煩”事。它需要你付出時間,付出精力,還要付出一份心境。--僅以《大話設計模式》來祭奠那逝去的……

簡單工廠的作用是實例化對象,不需要客戶了解這個對象屬于哪個具體子類。簡單工廠實例化的類具有相同的接口或者基類,在子類相對固定或者不需要擴展的時候,可以使用簡單工廠。如數據庫生產工廠就可以使用簡單工廠來實現。

 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;
        }
    }

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()