zoukankan      html  css  js  c++  java
  • 简单工厂模式 -- 大话设计模式

    在今天,读书有时是件“麻烦”事。它需要你付出时间,付出精力,还要付出一份心境。--仅以《大话设计模式》来祭奠那逝去的……

    简单工厂的作用是实例化对象,不需要客户了解这个对象属于哪个具体子类。简单工厂实例化的类具有相同的接口或者基类,在子类相对固定或者不需要扩展的时候,可以使用简单工厂。如数据库生产工厂就可以使用简单工厂来实现。

     1.简单的计算器实现

      输入两个数和运算符,实现两数相加或者两数相减。

      首先我们定义一个运算类,包含两个属性:数字A和数字B,还有一个获取结果的虚方法GetResult方便获取运算结果

        /// <summary>
        /// 运算类
        /// </summary>
        public class Operation
        {
            public double NumberA { get; set; }
    
            public double NumberB { get; set; }
    
            public virtual double GetResult()
            {
                var result = 0;
    
                return result;
            }
        }
    

       然后我们编写加法运算和减法运算类,让其集成运算类,重写GetResult类实现不同的运算结果(如果我们以后要增加其他运算方法,只需要新增一个继承Operation的运算类,而无需变动已经写好的加法和减法运算类)

        /// <summary>
        /// 加法运算
        /// </summary>
        public class OperationAdd : Operation
        {
            public override double GetResult()
            {
                return this.NumberA + this.NumberB;
            }
        }
    
        /// <summary>
        /// 减法运算
        /// </summary>
        public class OperationSub : Operation
        {
            public override double GetResult()
            {
                return this.NumberA - this.NumberB;
            }
        }
    

       定义一个简单运算工厂,到底要实例化谁,将来是否要新增实例化对象,比如除法、乘法等。这些都交给简单运算工厂来实现,以后若有变化要动也只需要改动工厂这块就好了,而不是整个项目去搜索一遍实例化运算类的代码

        /// <summary>
        /// 简单运算工厂
        /// </summary>
        public class OperationFactory
        {
            public static Operation CreateOperation(string operate)
            {
                Operation oper = null;
    
                switch (operate)
                {
                    case "+":
                        oper = new OperationAdd();
                        break;
                    case "-":
                        oper = new OperationSub();
                        break;
                }
    
                return oper;
            }
        }
    
  • 相关阅读:
    Markdown基本语法
    Linux之更好的使用Bash
    博客园-使用的模板
    井字棋的最优策略竟是先占角!
    Highcharts入门+Highcharts基础教程,【非常值得学习的资料】
    Python4周 入职培训的过程
    Linux系统入门学习:在CentOS上安装phpMyAdmin
    WeCenter程序安装
    js正则表达式语法
    Sublime text2如何设置快捷键让编写的HTML文件在浏览器预览?
  • 原文地址:https://www.cnblogs.com/amywechat/p/4914304.html
Copyright © 2011-2022 走看看