實驗一 軟件設計模式之工廠模式實驗

實驗一 軟件設計模式工廠模式實驗 

一、實驗目的

掌握軟件設計模式中的工廠模式,能夠用工廠模式編寫程序解決實際問題。

二、實驗內容與要求

內容使用工廠模式寫一個簡單的計算器,能實現加減乘除運算。要求輸入兩個數,選擇運算符,程序便能夠計算出結果。程序設計語言可自由選擇。

要求需要文字+代碼+截圖的形式對實驗主要代碼和運行結果進行展示描述。

三、實驗方法

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);
    }
}

結果截圖:

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章