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;
            }
        }
    }
  • 相关阅读:
    染色体共线性可视化
    Hi-C互作热图作图神器-HiCPlotter
    利用ONT测序检测真核生物全基因组甲基化状态
    scRNAseq benchmark 学习笔记
    友情链接
    关于
    TF目标检测API-Error: Argument must be a dense tensor: range(0, 3)
    python字符串使用
    Ubuntu下几个命令
    转::linux应用之gcc环境的安装
  • 原文地址:https://www.cnblogs.com/blacop/p/5986278.html
Copyright © 2011-2022 走看看