`

简单工厂模式

    博客分类:
  • C#
阅读更多
using System;

//简单工厂模式
namespace MyConsoleApplication
{
    /// <summary>
    /// 运算类
    /// </summary>
    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;
        }
    }

    /// <summary>
    /// 加法类
    /// </summary>
    class OperationAdd : Operation
    {
        public override double GetResult()
        {
            double result = 0;
            result = NumberA + NumberB;
            return result;
        }
    }
    /// <summary>
    /// 减法类
    /// </summary>
    class OperationSub : Operation
    {
        public override double GetResult()
        {
            double result = 0;
            result = NumberA - NumberB;
            return result;
        }
    }
    /// <summary>
    /// 乘法类
    /// </summary>
    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;
        }
    }

    class OperationFactory
    {
        public static Operation createOperation(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;
            Console.Write("请输入运算符:");
            var opers = Console.ReadLine().ToString();
            Console.Write("请输入第一个数:");
            var a = Convert.ToDouble(Console.ReadLine());
            Console.Write("请输入第二个数:");
            var b = Convert.ToDouble(Console.ReadLine());
            oper = OperationFactory.createOperation(opers);
            oper.NumberA = a;
            oper.NumberB = b;
            var result = "运算结果为:" + oper.GetResult();
            Console.WriteLine(result);
            Console.ReadLine();
        }
    }
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics