設計模式【1】:簡單工廠模式

比如我們寫一個加減乘除的計算類,按正常來寫的話一定是

public Class Operation
{
    public Add(int a, int b);
    public Sub(int a, int b);
    public Mul(int a, int b);
    public Dev(int a, int b);
}

或者是

public Class Operation
{
    public double Caculate(double a, double, String caculate)
    {
        switch(caculate)
        {
            case:"+"
            return a+b;
            ...
            ...
        }
    }
}

直接實例化Operation就直接用了,或者有爲了方便的直接把方法寫成static的。
雖然這樣寫已經可以了,但是問題來了,如何讓計算器知道我是想用哪一個方法呢?

簡單工廠模式
我們應該考慮用一個單獨的類來做這個創造實例的過程,這就是工廠。

public class OperationFactory
{
    public static Operation CreateOperate(String Operation)
    {

        Operation operation = null;
        switch (operation)
        {
            case "+":
                operation = new OperationAdd();
                break;
            case "-":
                operation = new OperationSub();
                break;
            case "*":
                operation = new OperationMul();
                break;
            case "/":
                operation = new OperationDiv();
                break;
        }
        return operation;
    }
}

現在只需要輸入運算符號,工廠就能實例化出合適的對象。
客戶端代碼

Operation operation;
opeartion = OperationFactory.createOperate("+");
operation.NumberA = 1;
operation.NumberB = 2;
double result = operation.GetResult();

優點:
根據外界給定的信息,決定究竟應該創建哪個具體類的對象。

缺點:
高內聚,所有創建邏輯集中到工廠類。

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