zoukankan      html  css  js  c++  java
  • 大话设计模式:第一章简单工厂模式

      面向对象的三大特性:封装,继承,多态。

    本文只是第一章计算器例子的源代码分享:

    1,定义一个运算基类,所有的运算都继承自它:

        /// <summary>
        /// 所有运算的基类
        /// </summary>
        class Operation
        {
            public double NumberA;
            public double NumberB;     
            /// <summary>
            /// 计算结果让子类重写
            /// </summary>        
            public virtual double GetResult()
            {
                double result=0d;
                return result;
            }
        }

    2,定义所有的运算类,继承自运算基类Operation

    View Code
        /// <summary>
        /// 下面的类都继承自Operation,重载了GetResult()
        /// </summary>
        class OperationAdd : Operation
        {
            public override double GetResult()
            {
                return (NumberA + NumberB);     
            }
        }
        class OperationSub : Operation
        {
            public override double GetResult()
            {
                return (NumberA - NumberB);
            }
        }
        class OperationMul : Operation
        {
            public override double GetResult()
            {
                return (NumberA * NumberB);
            }
        }
        class OperationDiv : Operation
        {
            public override double GetResult()
            {
                if (NumberB == 0)
                    throw new Exception("除数不能为0");
                return (NumberA / NumberB);
            }
        }

    3,定义一个简单工厂类,决定实例化哪一个对象:

    View Code
        /// <summary>
        /// 简单工厂类,判断创建哪一个实例
        /// </summary>
        class OperationFactory
        {       
            /// <summary>
            /// 根据运算符判断实例化哪个对象,静态方法可以直接调用
            /// </summary>
            /// <param name="opr">运算符</param>
            /// <returns>被实例化的运算对象</returns>
            public static Operation CreateObject(string opr)
            {
                Operation OpeObject = null;
                switch (opr)
                {
                    case "+":
                        OpeObject = new OperationAdd();
                        break;
                    case "-":
                        OpeObject = new OperationSub();
                        break;
                    case "*":
                        OpeObject = new OperationMul();
                        break;
                    case "/":
                        OpeObject = new OperationDiv();
                        break;                    
                }
                return OpeObject;
            }        
        }

    4,在Main方法中测试:

    View Code
        class Program
        {
            static void Main(string[] args)
            {
                while (true)
                {
                    try
                    {
                        Console.WriteLine("请输入两个数(每行一个):");
                        string NumberA = Console.ReadLine();
                        string NumberB = Console.ReadLine();
                        Console.WriteLine("请输入运算符+,-,*,/");
                        string Opr = Console.ReadLine();
    
                        Operation ope = OperationFactory.CreateObject(Opr);
                        ope.NumberA = Convert.ToDouble(NumberA);
                        ope.NumberB = Convert.ToDouble(NumberB);
    
                        string rusult = Convert.ToString(ope.GetResult());
                        Console.WriteLine("运算结果是:{0}", rusult);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }        
            }
        }        
  • 相关阅读:
    数据以Excel形式导出导服务器,再将文件读取到客户端另存 以HSSFWorkbook方式实现
    PL/SQL常用设置 可看引用位置更清晰直观 引自:http://blog.csdn.net/xiaoqforever/article/details/27695569
    Spring定时任务配置
    Log4日志配置及使用
    数据库 知识
    Magic-Club开发—第六天
    Magic-Club原型设计--第五天
    Magic-Club原型设计—第四天
    Magic-Club原型设计--第三天
    Magic-Club原型设计--第二天
  • 原文地址:https://www.cnblogs.com/wang7/p/2679698.html
Copyright © 2011-2022 走看看