• 简单工厂


    using System;
    using System.Collections.Generic;
    using System.Text;
    
    /*
     *设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。
     *简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。
     *简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 
     *简单工厂
     */
    
    namespace 简单工厂_计算器
    {
        /// <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>
            /// <param name="currentNumber"></param>
            /// <param name="inputString"></param>
            /// <returns></returns>
            public static string checkNumberInput(string currentNumber, string inputString)
            {
                string result = "";
                if (inputString == ".")
                {
                    if (currentNumber.IndexOf(".") < 0)
                    {
                        if (currentNumber.Length == 0)
                            result = "0" + inputString;
                        else
                            result = currentNumber + inputString;
                    }
                }
                else if (currentNumber == "0")
                {
                    result = inputString;
                }
                else
                {
                    result = currentNumber + inputString;
                }
    
                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;
            }
        }
    
        /// <summary>
        /// 除法类
        /// </summary>
        class OperationDiv : Operation
        {
            public override double GetResult()
            {
                double result = 0;
                if (NumberB == 0)
                    throw new Exception("除数不能为0。");
                result = NumberA / NumberB;
                return result;
            }
        }
    
        /// <summary>
        /// 平方类
        /// </summary>
        class OperationSqr : Operation
        {
            public override double GetResult()
            {
                double result = 0;
                result = NumberB * NumberB;
                return result;
            }
        }
    
        /// <summary>
        /// 平方根类
        /// </summary>
        class OperationSqrt : Operation
        {
            public override double GetResult()
            {
                double result = 0;
                if (NumberB < 0)
                    throw new Exception("负数不能开平方根。");
                result = Math.Sqrt(NumberB);
                return result;
            }
        }
    
        /// <summary>
        /// 相反数类
        /// </summary>
        class OperationReverse : Operation
        {
            public override double GetResult()
            {
                double result = 0;
                result = -NumberB;
                return result;
            }
        }
    
        /// <summary>
        /// 运算类工厂
        /// </summary>
        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;
                        }
                    case "sqr":
                        {
                            oper = new OperationSqr();
                            break;
                        }
                    case "sqrt":
                        {
                            oper = new OperationSqrt();
                            break;
                        }
                    case "+/-":
                        {
                            oper = new OperationReverse();
                            break;
                        }
                }
    
                return oper;
            }
        }
    
        class Program
        {
            static void Main1(string[] args)
            {
                try
                {
                    Console.Write("请输入数字A:");
                    string strNumberA = Console.ReadLine();
                    Console.Write("请选择运算符号(+、-、*、/):");
                    string strOperate = Console.ReadLine();
                    Console.Write("请输入数字B:");
                    string strNumberB = Console.ReadLine();
                    string strResult = "";
    
                    Operation oper;
                    oper = OperationFactory.createOperate(strOperate);
                    oper.NumberA = Convert.ToDouble(strNumberA);
                    oper.NumberB = Convert.ToDouble(strNumberB);
                    strResult = oper.GetResult().ToString();
    
                    Console.WriteLine("结果是:" + strResult);
    
                    Console.ReadLine();
    
    
                }
                catch (Exception ex)
                {
                    Console.WriteLine("您的输入有错:" + ex.Message);
                }
            }
        }
    }
    

      

  • 相关阅读:
    Dockerfile构建镜像
    00基础复习
    docker的网络(基础)
    02-Mysql中的运算符
    01-mysql中的数据类型
    Docker客户端连接Docker Daemon的方式
    docker-ce快速部署
    ubuntu18.04 server配置静态ip
    html语义化小记录
    webpack导入es6的简单应用
  • 原文地址:https://www.cnblogs.com/wuMing-dj/p/3357193.html
Copyright © 2020-2023  润新知