C#中的简单工厂设计模式示例

发布时间:2020-07-10 02:47:08 作者:风信子0311
来源:网络 阅读:443

这个是用面向对象的方法来实现加,减,乘,除的计算,使用了“简单工厂的设计模式”。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 简单公司实现计算1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入第一个数字:");
          double n1=  Convert.ToDouble( Console.ReadLine());
          Console.WriteLine("请输入第二个数字:");
         double n2= Convert.ToDouble(Console.ReadLine());
         Console.WriteLine("请输入一个操作符");
        string oper= Console.ReadLine();
        CalFather cal = Result(oper, n1, n2);
       double result= cal.GetResult();
       Console.WriteLine(result);
       Console.ReadKey();


        }

        /// <summary>
        /// 简单工厂模式
        /// </summary>
        /// <param name="oper">传入的操作符</param>
        /// <param name="n1">第一个运算的数字</param>
        /// <param name="n2">第二个运算的数字</param>
        /// <returns></returns>
        public static CalFather Result(string oper,double n1,double n2)
        {
            CalFather cal = null;
            switch (oper)
            {
                case "+": cal = new Add(n1, n2);
                    break;
                case "-": cal = new Sub(n1, n2);
                    break;
                case "*": cal = new Ride(n1, n2);
                    break;
                case "/":cal=new Chu(n1,n2);
                    break;
                default: Console.WriteLine("输入有误");
                    break;
            }

            return cal;
        }
    }
    /// <summary>
    /// 父类模型,用abstract抽象函数来实现多态
    /// </summary>
    public abstract class CalFather
    {
        public double NumberOne
        {
            get;
            set;
        }
        public double NumberTwo
        {
            get;
            set;
        }

        public CalFather(double One,double Two)
        {
            this.NumberOne = One;
            this.NumberTwo = Two;
        }

        public abstract double GetResult();
    }
    /// <summary>
    /// 加法的子类
    /// </summary>
    public class Add:CalFather
    {
        public Add(double one,double two):base(one,two)
        {

        }
        public override double GetResult()
        {
            return this.NumberOne + this.NumberTwo;
        }
    }
    /// <summary>
    /// 减法的子类
    /// </summary>
    public class Sub:CalFather
    {
        public Sub(double one,double two):base(one,two)
        {

        }
        public override double GetResult()
        {
            return this.NumberOne - this.NumberTwo;
        }
    }
    /// <summary>
    /// 乘法的子类
    /// </summary>
    public class Ride:CalFather
    {
        public Ride(double one,double two):base(one,two)
        {

        }
        public override double GetResult()
        {
            return this.NumberOne * this.NumberTwo;
        }
    }
    /// <summary>
    /// 除法的子类
    /// </summary>
    public class Chu:CalFather
    {
        public Chu(double one,double two):base(one,two)
        {

        }
        public override double GetResult()
        {
            return this.NumberOne / this.NumberTwo;
        }
    }
}


推荐阅读:
  1. Java描述设计模式(02):简单工厂模式
  2. 设计模式之简单工厂模式

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

简单 工厂设计

上一篇:现代中小企业IT基础平台建设 - 完整案例实战(05_网管平台)

下一篇:sublime3中编译报错 error2

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》