簡單工廠模式

簡單工廠模式

        面向對象的程序設計編程思想,是通過封裝,繼承,多態把程序的耦合度降低,用設計模式使得程序更加的靈活,容易修改,並且易於複用。下面我們就通過簡單工廠模式的例子來具體瞭解一下。

       簡單工廠模式是屬於創建型模式,又叫做靜態工廠方法模式。簡單工廠模式是由一個工廠對象決定創建出哪一種產品類的實例。通過學習一個計算器的例子來了解。

實例:

運算類:

//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 result = 0;
            return result;
        }
    }
加減乘除類

 //加減乘除類
    //加法
    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;
            if (NumberB==0)
            {
                throw new Exception("除數不能爲0.");
            }
            result = NumberA / NumberB;
            return result;
        }
    }
簡單工廠模式

 //簡單工廠模式
    public class OperationFactory
    {
        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;
        }
    }
客戶端代碼

 //客戶端代碼
    class Program
    {
        static void Main(string[] args)
        {
            Operation oper;
            oper = OperationFactory.createOperate("-");
            oper.NumberA = 1;
            oper.NumberB = 1;
            double result = oper.GetResult();
        }
    }

類圖:


       簡單模式優點:工廠類是整個模式的關鍵.包含了必要的邏輯判斷,根據外界給定的信息,決定究竟應該創建哪個具體類的對象. 不必管對象究竟如何創建及如何組織的.明確了各自的職責和權利,有利於整個軟件體系結構的優化。

       缺點:由於工廠類集中了所有實例的創建邏輯,違反了高內聚責任分配原則,將全部創建邏輯集中到了一個工廠類中;它所能創建的類只能是事先考慮到的,如果需要添加新的類,則就需要改變工廠類了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章