文字理解
簡單工廠模式又 叫靜態(tài)工廠方法模式(Static FactoryMethod Pattern),是通過專門定義一個類來負(fù)責(zé)創(chuàng)建其他類的實例,被創(chuàng)建的實例通常都具有共同的父類。
簡單描述
簡單工廠將對象的創(chuàng)建過程進行了封裝,用戶不知道到底創(chuàng)建了什么對象,只需要調(diào)用工廠類,工廠類按照自己的邏輯進行創(chuàng)建對象。
代碼理解
現(xiàn)在有一道面試題:
使用java實現(xiàn)一個計算機控制臺程序,要求輸入數(shù)的運算,得到結(jié)果。
public abstract class Operation {
public abstract float getResult(float firstNumber, float secondNumber);
}
//把符號都當(dāng)做對象處理,實現(xiàn)此接口
public class AddOperation extends Operation {
@Override
public float getResult(float firstNumber, float secondNumber) {
return firstNumber+secondNumber;
}
}
public class SubOperation extends Operation {
@Override
public float getResult(float firstNumber, float secondNumber) {
return firstNumber-secondNumber;
}
}
public class MulOperation extends Operation {
@Override
public float getResult(float firstNumber, float secondNumber) {
return firstNumber*secondNumber;
}
}
public class DivOperation extends Operation {
@Override
public float getResult(float firstNumber, float secondNumber) {
return firstNumber/secondNumber;
}
}
//接下來需要解決的就是對象的創(chuàng)建問題了,既如何根據(jù)不同的情況創(chuàng)建不同的對象:我們正好可以通過簡單工廠模式實現(xiàn)
public class OperationFactory {
public static Operation getOperation(String quotaFlag){
Operation o = null;
switch (quotaFlag){
case "+" : o = new AddOperation();
case "-" : o = new SubOperation();
case "*" : o = new MulOperation();
case "/" : o = new DivOperation();
default:break;
}
return o;
}
}
//調(diào)用:
public class Computer {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("請輸入第一個數(shù)字:");
float firstNum = in.nextFloat();
System.out.println("請輸入第二個數(shù)字:");
float secondNum = in.nextFloat();
System.out.println("請輸入運算符號:");
String countQuato = in.next();
System.out.println(count(firstNum,secondNum,countQuato));
}
private static float count(float firstNum,float secondNum , String countQuota){
//通過工廠類獲取對象
Operation operation = OperationFactory.getOperation(countQuota);
return operation.getResult(firstNum,secondNum);
}
}