Java設計模式之四(經典面試題:工廠模式在開發中的運用)
阿新 • • 發佈:2019-01-07
面試題:
寫一個簡單的計算器。
程式碼實現:
抽象一個運算類:
package com.qianyan.calcuator;
public abstract class Operation {
//數字一
private double num1;
//數字二
private double num2;
public double getNum1() {
return num1;
}
public void setNum1(double num1) {
this.num1 = num1;
}
public double getNum2() {
return num2;
}
public void setNum2(double num2) {
this.num2 = num2;
}
public abstract double getResult();
}
建立工廠類:
package com.qianyan.factory;
import com.qianyan.calcuator.AddOperation;
import com.qianyan.calcuator.Operation;
import com.qianyan.calcuator.SubtractOperation;
public class OperationFactory {
public static Operation getOperation(String oper){
if("+".equals(oper))
return new AddOperation();
else if("-".equals(oper))
return new SubtractOperation();
else
return null;
}
}
抽象運算的實現類:
package com.qianyan.calcuator;
public class AddOperation extends Operation{
@Override
public double getResult() {
return this.getNum1() + this.getNum2();
}
}
package com.qianyan.calcuator;
public class SubtractOperation extends Operation{
@Override
public double getResult() {
return this.getNum1() - this.getNum2();
}
}
使用者類:
package com.qianyan.user;
import java.util.Scanner;
import com.qianyan.calcuator.Operation;
import com.qianyan.factory.OperationFactory;
public class User {
public static void main(String[] args) {
System.out.println("----小C計算器程式----");
Scanner input = new Scanner(System.in);
System.out.println("請輸入第一個運算數字:");
String str1 = input.nextLine();
System.out.println("請輸入運算子:");
String oper = input.nextLine();
System.out.println("請輸入第二個運算數字:");
String str2 = input.nextLine();
double num1 = Double.parseDouble(str1);
double num2 = Double.parseDouble(str2);
Operation opertion = OperationFactory.getOperation(oper);
opertion.setNum1(num1);
opertion.setNum2(num2);
double result = opertion.getResult();
System.out.println(str1 + oper + str2 + "=" + result);
}
}
測試結果:
----小C計算器程式----
請輸入第一個運算數字:
5
請輸入運算子:
-
請輸入第二個運算數字:
3
5-3=2.0