简单工厂计算器

这个是今天上课的练习,我在这里写写过程,此程序还有许多缺陷,见谅(引用命名空间需要在VS中引用类所在的项目)

首先定义一个接口

interface Icounter

{

    double  Counter();

}

其次在解决方案中分别生成5个类

1,添加加法类。4个运算类分别引用接口命名空间

class Add1:Icounter

{

        //定义字段

       double num1;

       double  num2;

        //构造方法传参数

        public Add1(double n1,double n2)

      {

              num1=n1;

              num2=n2;

      }

        //接口方法

         public double Counter()

      {

         return num1+num2;

      }

}

 添加减法类

 class Sub1:Icounter

{    

       double num1;

       double num2;

        public Sub1(double n1,double n2)

      {

              num1=n1;

              num2=n2;

      }

         public double Counter()

      {

         return num1-num2;

      } 

}

添加乘法类

class Mult1:Icounter

{    

       double num1;

       double num2;

        public Mult1(double n1,double n2)

      {

              num1=n1;

              num2=n2;

      }

         public double Counter()

      {

         return num1*num2;

      }

}

添加除法表

class Div1:Icounter

{   

       double num1;

       double num2;

        public Div1(double n1,double n2)

      {

              num1=n1;

            //因为n2不能为0

            if(n2==0)

            {

                  Console.WriteLine("第二个数字不能为0")

            }

              else

             {

              num2=n2;

            }

      }

         public double Counter()

      {

         return num1/num2;

      }

}

//定义工厂类   引用接口命名空间  引用加减乘除的命名空间

class  Factory

{

     //定义静态方法

     public static Icounter  jisuan(double n1,double n2,string oper)

    {

             switch(oper)

            {

                  case "+":return new Add1(n1,n2);

                  case "-":return new Sub1(n1,n2);

                  case "*":return new Mult1(n1,n2);

                  case "-":return new Div1(n1,n2);

                 defalut:return new Add1(n1,n2);

             }

    }

}

主函数引用接口命名空间,引用工厂命名空间

    Console.WriteLine("请输入第一个数字");

    double num1=Convert.ToDouble(Console.ReadLine());

    Console.WriteLine("请输入运算符号");

    string oper=Console.ReadLine();

    Console.WriteLine("请输入第二个数字");

    double num2=Convert.ToDouble(Console.ReadLine());

   Icounter res=Factory.jisuan(num1,num2,oper);

    double result= res.Counter();

   Console.WriteLine(result);

   Console.ReadKey();

原文地址:https://www.cnblogs.com/349932030yin/p/2568773.html