實驗一 軟件設計模式之工廠模式實驗
一、實驗目的
掌握軟件設計模式中的工廠模式,能夠用工廠模式編寫程序,解決實際問題。
二、實驗內容與要求
內容:使用工廠模式寫一個簡單的計算器,能實現加減乘除運算。要求輸入兩個數,選擇運算符,程序便能夠計算出結果。程序設計語言可自由選擇。
要求:需要用“文字+代碼+截圖”的形式對實驗的主要代碼和運行結果進行展示和描述。
三、實驗方法
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);
}
}
結果截圖: