实验一 软件设计模式之工厂模式实验

实验一 软件设计模式工厂模式实验 

一、实验目的

掌握软件设计模式中的工厂模式,能够用工厂模式编写程序解决实际问题。

二、实验内容与要求

内容使用工厂模式写一个简单的计算器,能实现加减乘除运算。要求输入两个数,选择运算符,程序便能够计算出结果。程序设计语言可自由选择。

要求需要文字+代码+截图的形式对实验主要代码和运行结果进行展示描述。

三、实验方法

1. 创建一个工厂窗口类(factoryPatternDemo.java)和工厂类(countFactory.java),通过工厂窗口类发出的需求,调用工厂类。

2.创建加减乘除四种功能类,方便接口的调用。

3. 创建接口(count.java),工厂类通过接口调用加减乘除等子类函数,实现操作,很好的隐藏了加减乘除的具体细节。

、实验代码以及结果

//factoryPatternDemo.java
package homework;

import java.util.Scanner;

public class factoryPatternDemo {
    public static  void main(String [] args){
          countFactory countFactory1= new countFactory();
          System.out.println("请你输入要进行计算的运算符:如'add' 'sub' ' mul' 'div' : ");
          Scanner sc= new Scanner(System.in);
          String name= sc.nextLine();
          System.out.println("请输入要计算的两个数字(中间以空格隔开):");
          Scanner sc1= new Scanner(System.in);
          double a= sc1.nextDouble();
          double b= sc1.nextDouble();

          if(name.equalsIgnoreCase("add")){
              count cout1=countFactory1.getcount("add");
              cout1.calculate(a , b);
          }else  if(name.equalsIgnoreCase("sub")){
              count cout1=countFactory1.getcount("sub");
              cout1.calculate( a, b);
          }else if(name.equalsIgnoreCase("mul")){
              count cout1=countFactory1.getcount("mul");
              cout1.calculate( a, b);
          }else if(name.equalsIgnoreCase("div")){
              count cout1=countFactory1.getcount("div");
              cout1.calculate( a, b);
          }
    }
}

countFactory.java
package homework;

public class countFactory {
    public  count  getcount(String countType){
        if(countType ==null ){
            return null;
        }
        if(countType.equalsIgnoreCase("add")) {
            return new addDemo();
        } else
            if(countType.equalsIgnoreCase("sub")){
            return new subDemo();
            } else
                if(countType.equalsIgnoreCase("div")){
                return new divDemo();
                } else
                    if(countType.equalsIgnoreCase("mul")){
                    return new mulDemo();
                    }
                    return null;
    }
}
//接口类count.java
package homework;

public interface count {
    void calculate(double x,double y );
}
//addDemo.java
package homework;
public class addDemo implements count {
    @Override
    public void calculate(double x, double y) {
        double z;
        z=x+y;
        System.out.println("两数相加的结果是:"+z);

    }
}



//divDemo.java

package homework;
public class divDemo implements count  {
    @Override
    public void calculate(double x,double y) {
        double z;
        z=x/y;
        System.out.println( "两数相除的结果是:"+ z);
    }
}
//mulDemo.Java
package homework;
public class mulDemo implements count  {
    @Override
    public void calculate(double x, double y) {
        double z;
        z=x*y;
        System.out.println( "两数相乘的结果是:"+ z);
    }
}

//subDemo.Java
package homework;
public class subDemo implements count  {
    @Override
    public void calculate(double x, double y ) {
        double z;
        z=x-y;
        System.out.println( "两数相减的结果是:"+ z);
    }
}

结果截图:

 

 

 

 

 

 

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页