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

      通过简单工厂模式  更加熟悉面向对象编程。对面向工程编程有了一定的认识。

      简单工厂模式 通俗点讲就是 通过一个单独的类来构造实例对象的过程 就是工厂

          通过小菜鸟和大鸟之间的对话 熟悉了学习了简单工厂模式 计算器版本的更新

          第一版计算器  也是我会写出来的计算器 我的思路 面向过程编程

         

     Console.WriteLine("请输入第一个数");
                string OneStr = Console.ReadLine();
                decimal OneNumber = Convert.ToDecimal(OneStr);
                Console.WriteLine("请输入第二个数");
                string TwoStr = Console.ReadLine();
                decimal TwoNumber = Convert.ToDecimal(TwoStr);
                Console.WriteLine("请输入运算符");
                string Operate = Console.ReadLine();
                decimal Resualt = 0;
             
    
                switch (Operate)
                {
                    case "+":
                        Resualt = OneNumber + TwoNumber;
                        break;
                    case "*":
                        Resualt = OneNumber * TwoNumber;
                        break;
                    case "-":
                        Resualt = OneNumber - TwoNumber;
                        break;
                    case "/":
                        if (TwoNumber == 0)
                        {
    
                            Console.WriteLine("除数不能为零!");
                        }
                        else
                        {
                            Resualt = OneNumber / TwoNumber;
    
                        }
                        break;
                }

          第二版计算器 面向对象编程(业务和逻辑分离) 封装

        

      Resualt = OperateProvider.Calculation(OneNumber ,TwoNumber ,Operate);

           

     CalculateProvider calcalte = OperateFactory.CreateOperate(Operate);
                calcalte.NumberA = OneNumber;
                calcalte.NumberB = TwoNumber;
                Resualt = calcalte.GetResualt();
    
    
    
    /// <summary>
        /// 计算基类
        /// </summary>
        public class CalculateProvider
        {
            private decimal _numberA = 0;
            private decimal _numberB = 0;
            public decimal NumberA
            {
                get { return _numberA; }
                set { _numberA = value; }
            }
            public decimal NumberB
            {
                get { return _numberB; }
                set { _numberB = value; }
            }
            /// <summary>
            /// 虚方法 实现类
            /// </summary>
            /// <returns></returns>
            public virtual decimal GetResualt()
            {
                decimal resualt = 0;
                return resualt;
            }
        }
    
    
    /// <summary>
        /// 简单工厂模式 工厂如何实例化出合适的对象
        /// </summary>
        public class OperateFactory
        {
            public static CalculateProvider CreateOperate(string Operate)
            {
                CalculateProvider calcuate = null;
                switch (Operate)
                {
                    case "+":
                        calcuate = new AddProvider();
                        break;
                    case "-":
                        calcuate = new SubtractProcider();
                        break;
                }
                return calcuate;
            }
        }

    第三版计算器 面向对象继承 简单工厂模式

     CalculateProvider calcalte = OperateFactory.CreateOperate(Operate);
                calcalte.NumberA = OneNumber;
                calcalte.NumberB = TwoNumber;
                Resualt = calcalte.GetResualt();
    
    
    /// <summary>
        /// 简单工厂模式 工厂如何实例化出合适的对象
        /// </summary>
        public class OperateFactory
        {
            public static CalculateProvider CreateOperate(string Operate)
            {
                CalculateProvider calcuate = null;
                switch (Operate)
                {
                    case "+":
                        calcuate = new AddProvider();
                        break;
                    case "-":
                        calcuate = new SubtractProcider();
                        break;
                }
                return calcuate;
            }
        }
    
    
    
    /// <summary>
        /// 计算基类
        /// </summary>
        public class CalculateProvider
        {
            private decimal _numberA = 0;
            private decimal _numberB = 0;
            public decimal NumberA
            {
                get { return _numberA; }
                set { _numberA = value; }
            }
            public decimal NumberB
            {
                get { return _numberB; }
                set { _numberB = value; }
            }
            /// <summary>
            /// 虚方法 实现类
            /// </summary>
            /// <returns></returns>
            public virtual decimal GetResualt()
            {
                decimal resualt = 0;
                return resualt;
            }
        }
  • 相关阅读:
    JAVA_SE基础——59.权限访问修饰符
    JAVA_SE基础——58.如何用jar命令对java工程进行打包
    JAVA_SE基础——57.有了包之后类与类之间的访问使用import语句
    JAVA_SE基础——56.包的创建
    JAVA_SE基础——55.自定义异常类
    JAVA_SE基础——54.异常
    JAVA_SE基础——53.什么是异常?
    Spring整合Mybatis
    Mybatis的ResultMap结果集映射、日志、分页
    Java中的值传递机制
  • 原文地址:https://www.cnblogs.com/q101301/p/5357397.html
Copyright © 2011-2022 走看看