C#設計模式-簡單工廠模式

以面向對象的分析設計編程思想,考慮通過封裝,繼承,多態把程序的耦合度降低,通過使用設計模式使得程序更加靈活,容易修改,並且易於複用。
通過將功能都封裝成一個類,然後建立一個工廠類就可以將所有的功能都通過這個工廠來生成所需要的產品。
計算器例子-通過簡單工廠模式
1、所有的加減乘除的功能都有獨立的類繼承自運算
2、通過工廠來將加減乘除的類功能實現
3、客戶端調用

using System;

namespace shaoxiongC_sharp
{
    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 = this.NumberA + this.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("Wrong Input");
            }
            result = NumberA / NumberB;
            return result;
        }
    }
    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 operationSub();
                    break;
                case "/":
                    oper = new operationDiv();
                    break;
            }
            return oper;
        }
    }
    class MainClass
    {
        public static void Main(string[] args)
        {
            Operation oper;
            oper = operationFactory.createOperate("+");
            oper.NumberA = 1;
            oper.NumberB = 2;
            double result = oper.GetResult();
            Console.WriteLine("運算結果是:"+result);
        }
    }
}

運行效果
在這裏插入圖片描述

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