zoukankan      html  css  js  c++  java
  • 一、简单工厂模式之简易计算器

    1、主程序代码

    using System;
    
    namespace _01简单工厂模式
    {
        class Program
        {
            static void Main(string[] args)
            {
                Operation oper;     //实例化Operation对象
                oper = OperationFactory.createOperate("*");
                oper.NumberA = 4;
                oper.NumberB = 2;
                double result = oper.GetResult();   //调用运算方法
    
                Console.WriteLine(result);
                Console.ReadKey();
            }
        }
    }

    2、Operation运算类及具体的运算操作子类

    using System;
    
    namespace _01简单工厂模式
    {
        /// <summary>
        ///Operation运算类
        /// </summary>
        public class Operation
        {
            private double _numberA = 0;    //待计算的数字A、B
            private double _numberB = 0;
    
            public double NumberA
            {
                get { return _numberA; }
                set { _numberA = value; }
            }
            public double NumberB
            {
                get { return _numberB; }
                set { _numberB = value; }
            }
            /// <summary>
            /// 计算结果的方法,虚拟方法用于子类重写
            /// </summary>
            /// <returns>数学运算后的结果</returns>
            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;
            }
        }
        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;
            }
        }
    }

    3、运算工厂类

    namespace _01简单工厂模式
    {
        /// <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;
                }
                return oper;
            }
        }
    }

    注:本文内容是《大话设计模式》一书阅读过程复写代码!

  • 相关阅读:
    1094. Car Pooling
    121. Best Time to Buy and Sell Stock
    58. Length of Last Word
    510. Inorder Successor in BST II
    198. House Robber
    57. Insert Interval
    15. 3Sum java solutions
    79. Word Search java solutions
    80. Remove Duplicates from Sorted Array II java solutions
    34. Search for a Range java solutions
  • 原文地址:https://www.cnblogs.com/MeiToufu/p/14514110.html
Copyright © 2011-2022 走看看