⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simplefactory.cs

📁 C#设计模式源码
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.Text;

namespace DesignDll
{

    /*
    简单的工厂模式
    只解决创建对象问题
    */

    /// <summary>
    /// 父类
    /// </summary>
    public class Operation
    {
        private double _numberA = 0;
        private double _numberB = 0;

        /// <summary>
        /// 操作数A
        /// </summary>
        public double numberA
        {
            get { return _numberA; }
            set { _numberA = value;}
        }

        /// <summary>
        /// 操作数B
        /// </summary>
        public double numberB
        {
            get { return _numberB; }
            set { _numberB = value; }
        }

        /// <summary>
        /// 得到的结果,为虚函数以便让子类重写该方法
        /// </summary>
        /// <returns></returns>
        public virtual double GetResult()
        {
            double result =0;
            return result; 
        }

    }

    /// <summary>
    /// 加法操作类 
    /// </summary>
    public class OperationAdd : Operation
    {
        public override double GetResult()
        {
            return numberA + numberB;
        }
    }

    /// <summary>
    /// 减法操作类
    /// </summary>
    public class OperationSub : Operation
    {
        public override double GetResult()
        {
            return numberA - numberB;
        }
    }


    /// <summary>
    /// 乘法操作类
    /// </summary>
    public class OperationMul : Operation
    {
        public override double GetResult()
        {
            return numberA * numberB;
        }
    }

    /// <summary>
    /// 除法操作类
    /// </summary>
    public class OperationDiv : Operation
    {
        public override double GetResult()
        {
            if (numberB ==0)
                throw new Exception("除数不能为0!");
            return numberA / numberB;
            //return base.GetResult();
        }
    }

    /// <summary>
    /// 创建一个工厂操作类,用于管理以上操作类
    /// </summary>
    public class operatorFactory
    {
        public static Operation createOperate(string operate)
        {
            Operation objOperation = null;

            switch (operate)
            {
                case  "+":
                    objOperation = new OperationAdd();
                    break;
                case  "-":
                    objOperation = new OperationSub();
                    break;
                case  "*":
                    objOperation = new OperationMul();
                    break;
                case "/":
                    objOperation = new OperationDiv();
                    break;
            }
            return objOperation;
        }


    }


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -