【設計模式系列學習筆記】1、簡單工廠模式

如果說數學是思維的體操,那設計模式就是面向對象編程思維的體操;

簡易計算器類結構圖:

操作類,定義兩個操作數,並聲明抽象方法getResult(),具體實現由子類完成;

public abstract class Operation {

    private double numberA;

    private double numberB;

    public abstract double getResult() throws Exception;

}

加法操作類,實現抽象方法; 

public class OperationAdd extends Operation {

    @Override
    public double getResult() {
        return getNumberA() + getNumberB();
    }

}
public class OperationDiv extends Operation {
    @Override
    public double getResult() throws Exception {
        if(getNumberB() == 0) {
            throw new Exception("被除數不能爲0!");
        }
        return getNumberA() / getNumberB();
    }
}

生成操作對象的工廠類:

public class OperationFactory {

    public static Operation createOperation(String operate) throws Exception {
        Operation operation = null;
        switch(operate.trim()) {
            case "+":
                operation = new OperationAdd();
                break;
            case "-" :
                operation = new OperationSub();
                break;
            case "*" :
                operation = new OperationMul();
                break;
            case "/" :
                operation = new OperationDiv();
                break;
            default:
                throw new Exception("輸入的運算符號有誤!");
        }
        return operation;
    }

}

客戶端代碼: 

public class OperationMain {

    public static void main(String[] args) throws Exception {
        Operation operation = OperationFactory.createOperation("*");
        operation.setNumberA(15);
        operation.setNumberB(18);
        System.out.println(operation.getResult());
    }

}

如果再增加其他運算方法如開方,新建開方操作類,繼承操作類,並實現抽象方法,並且在工廠類的switch-case中增加分支即可!

 

 

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