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;
            }
        }
    }

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

  • 相关阅读:
    如何把项目上传到github
    springBoot整合Mybatis为什么可以省略mybatis-config.xml
    【Mybatis源码解析】-mybatis-spring原理解析
    没有名字 [整除分块优化dp]
    替身使者 [区间dp]
    P3158 [CQOI2011]放棋子 [动态规划]
    博士之时 [分类讨论, 计数]
    曾有两次 [最短路树]
    序列 [线段树]
    城镇 [树的直径, 启发式合并]
  • 原文地址:https://www.cnblogs.com/MeiToufu/p/14514110.html
Copyright © 2011-2022 走看看