W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
大鳥:“寫得很不錯(cuò)嗎,大大超出我的想象了,你現(xiàn)在的問題其實(shí)就是如何去實(shí)例化對(duì)象的問題,哈,今天心情不錯(cuò),再教你一招‘簡(jiǎn)單工廠模式’,也就是說,到底要實(shí)例化誰(shuí),將來會(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)算子類就可以了呀。”
大鳥:“嗯?夠了嗎?”
小菜:“對(duì)了,還需要去修改運(yùn)算類工廠,在switch中增加分支?!?br>
大鳥:“哈,那才對(duì),那如果要修改界面呢?”
小菜:“那就去改界面呀,關(guān)運(yùn)算什么事呀?!?br>
大鳥:“我們來看看這幾個(gè)類的結(jié)構(gòu)圖?!?/p>
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: