1.10簡(jiǎn)單工廠模式

2020-09-14 09:36 更新

大鳥:“寫得很不錯(cuò)嗎,大大超出我的想象了,你現(xiàn)在的問題其實(shí)就是如何去實(shí)例化對(duì)象的問題,哈,今天心情不錯(cuò),再教你一招‘簡(jiǎn)單工廠模式’,也就是說,到底要實(shí)例化誰,將來會(huì)不會(huì)增加實(shí)例化的對(duì)象(比如增加開根運(yùn)算),這是很容易變化的地方,應(yīng)該考慮用一個(gè)單獨(dú)的類來做這個(gè)創(chuàng)造實(shí)例的過程,這就是工廠,來,我們看看這個(gè)類如何寫?!?/p>

/// summary
/// 運(yùn)算類工廠
/// /summary
class OperationFactory{
    public static Operation createOperate(string operate){
        Operation oper = null;
        switch (operate){
            case "+":
                oper = new OperationAdd();
                break;
            case "-":
                oper = new OperationSub();
                break;
            case "*":
                oper = new OperationMul();
                break;
            case "/":
                oper = new OperationDiv();
                break;
        }
        return oper;
    }
}

大鳥:“哈,看到吧,這樣子,你只需要輸入運(yùn)算符號(hào),工廠就實(shí)例化出合適的對(duì)象,通過多態(tài),返回父類的方式實(shí)現(xiàn)了計(jì)算器的結(jié)果?!?/p>

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

大鳥: “哈,界面的實(shí)現(xiàn)就是這樣的代碼,不管你是控制臺(tái)程序,Windows程序,Web程序,PDA或手機(jī)程序,都可以用這段代碼來實(shí)現(xiàn)計(jì)算器的功能,當(dāng)有一天我們需要更改加法運(yùn)算,我們只需要改哪里?”

小菜:“改OperationAdd 就可以了?!?br>

大鳥:“那么我們需要增加各種復(fù)雜運(yùn)算,比如平方根,立方根,自然對(duì)數(shù),正弦余弦等,如何做?”

小菜:“只要增加相應(yīng)的運(yùn)算子類就可以了呀?!?br>

大鳥:“嗯?夠了嗎?”

小菜:“對(duì)了,還需要去修改運(yùn)算類工廠,在switch中增加分支?!?br>

大鳥:“哈,那才對(duì),那如果要修改界面呢?”

小菜:“那就去改界面呀,關(guān)運(yùn)算什么事呀。”

大鳥:“我們來看看這幾個(gè)類的結(jié)構(gòu)圖。”

blob.png

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)