zoukankan      html  css  js  c++  java
  • 简单工厂设计模式计算器

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace 简单工厂设计模式计算器
    {
        class Program
        {
            static void Main(string[] args)
            {
                //虚方法、抽象类、接口
                //面向对象计算器 案例
                while (true)
                {
                    Console.WriteLine("请输入第一个数字");
                    double n1 = Convert.ToDouble(Console.ReadLine());
                    Console.WriteLine("请输入第二个数字");
                    double n2 = Convert.ToDouble(Console.ReadLine());
                    Console.WriteLine("请输入运算符");
                    string opera = Console.ReadLine();
                    CalFather cal = GetCal(opera, n1, n2);//通过opera操作符参数判断生成不同的子类赋值给父类 并返回
                    double res = cal.GetResult();//调用的父类抽象方法其实是被子类的override重写后的方法
                    Console.WriteLine(res);
                    Console.ReadKey();
                }
               
            }
    
            public static CalFather GetCal(string opear, double n1, double n2)
            {
                CalFather cal = null;
                switch (opear)
                {
                    case "+": cal = new Add(n1, n2);
                        break;
                    case "-": cal = new Sub(n1, n2);
                        break;
                    case "*": cal = new Cheng(n1, n2);
                        break;
                    case "/": cal = new Chu(n1, n2);
                        break;
                }
                return cal;
            }
        }
    
    
        public abstract class CalFather
        {
            public double NumberOne
            {
                get;
                set;
            }
    
            public double NumberTwo
            {
                get;
                set;
            }
    
            public CalFather(double n1, double n2)
            {
                this.NumberOne = n1;
                this.NumberTwo = n2;
            }
    
    
            public abstract double GetResult();
        }
    
    
        public class Add : CalFather
        {
            public Add(double n1, double n2)
                : base(n1, n2)
            {
    
            }
    
            public override double GetResult()
            {
                return this.NumberOne + this.NumberTwo;
            }
        }
    
        public class Sub : CalFather
        {
            public Sub(double n1, double n2)
                : base(n1, n2)
            {
    
            }
    
            public override double GetResult()
            {
                return this.NumberOne - this.NumberTwo;
            }
        }
    
        public class Cheng : CalFather
        {
            public Cheng(double n1, double n2)
                : base(n1, n2)
            {
    
            }
    
            public override double GetResult()
            {
                return this.NumberOne * this.NumberTwo;
            }
        }
    
        public class Chu : CalFather
        {
            public Chu(double n1, double n2)
                : base(n1, n2)
            {
    
            }
    
            public override double GetResult()
            {
                return this.NumberOne / this.NumberTwo;
            }
        }
    }
  • 相关阅读:
    调整心态,夯实基础
    js实现轮播图动画(更新"旋转木马")
    封装简单动画函数-由简到完善
    纯Css绘制三角形箭头三种方法
    JS实现图片''推拉门''效果
    一个基于 canvas 的画板
    Python 控制台进度条的实现
    Flask博客开发——Tinymce编辑器
    Flask博客开发——登录验证码
    用于水和水蒸汽物性计算的Python模块——iapws
  • 原文地址:https://www.cnblogs.com/blacop/p/5986278.html
Copyright © 2011-2022 走看看