課程
/后端開發(fā)
/PHP
/大話PHP設(shè)計模式
舉幾個例子說明下依賴倒置和控制反轉(zhuǎn)的使用!
2016-08-10
源自:大話PHP設(shè)計模式 7-3
正在回答
首先我覺得你要清晰幾個概念:
緊耦合:
首先在 page 類中與 UserStrategy 的實例,以及策略的具體實現(xiàn)來達到策略的具體實現(xiàn),這樣是不是 page 與?UserStrategy 緊密相關(guān),也就是說 如果?UserStrategy 的實現(xiàn)修改了,例如:去掉了 showAd() 方法。page 自然需要做相應(yīng)修改,這就叫做 緊耦合(依賴性太強)。
依賴倒置和控制翻轉(zhuǎn):
page 類里不需要?UserStrategy 的具體實現(xiàn),只需要知道 page 場景下需要?UserStrategy 的策略,具體策略下實現(xiàn)那些方法,不需要知道。這樣 page 與?UserStrategy 是離散的、低耦合的。這樣代碼的就更加穩(wěn)定,可維護,以拓展。
明白了這幾個概念,我想你應(yīng)該知道為什么我們需要依賴倒置和控制翻轉(zhuǎn)了。
設(shè)計模式不要為了用而用,而是應(yīng)該明白為什么要用才去用
追逐夢想30 提問者
奮斗de小蝸牛
難道意思是實現(xiàn)解耦,需要新增Strategy的index方法,然后把showAd,showCategory包進去。然后在page類的index方法中只有$$this->strategy->index(),這樣就實現(xiàn)了無關(guān)性
不明白說的是什么,緊耦合不好,需要解耦。但實際上,page類的index方法,是依賴于Strategy的showAd,showCategory()方法,如果一個方法要刪除掉,比如刪除showAd,那還是要改page類的index方法。
坐不住的雨傘
好的,非常感謝!
舉報
幫助PHPer具備使用設(shè)計模式解決工程中復(fù)雜邏輯的能力
1 回答策略模式經(jīng)常使用嗎?
2 回答這個裝飾器模式跟策略模式有什么區(qū)別?
3 回答使用了策略模式并沒有避免添加else{}代碼啊
1 回答這個是不是類似于控制反轉(zhuǎn)?
1 回答原型模式,就是工廠模式和單例模式的綜合?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2016-08-11
首先我覺得你要清晰幾個概念:
緊耦合:
首先在 page 類中與 UserStrategy 的實例,以及策略的具體實現(xiàn)來達到策略的具體實現(xiàn),這樣是不是 page 與?UserStrategy 緊密相關(guān),也就是說 如果?UserStrategy 的實現(xiàn)修改了,例如:去掉了 showAd() 方法。page 自然需要做相應(yīng)修改,這就叫做 緊耦合(依賴性太強)。
依賴倒置和控制翻轉(zhuǎn):
page 類里不需要?UserStrategy 的具體實現(xiàn),只需要知道 page 場景下需要?UserStrategy 的策略,具體策略下實現(xiàn)那些方法,不需要知道。這樣 page 與?UserStrategy 是離散的、低耦合的。這樣代碼的就更加穩(wěn)定,可維護,以拓展。
明白了這幾個概念,我想你應(yīng)該知道為什么我們需要依賴倒置和控制翻轉(zhuǎn)了。
設(shè)計模式不要為了用而用,而是應(yīng)該明白為什么要用才去用
2019-12-25
難道意思是實現(xiàn)解耦,需要新增Strategy的index方法,然后把showAd,showCategory包進去。然后在page類的index方法中只有$$this->strategy->index(),這樣就實現(xiàn)了無關(guān)性
2019-12-25
不明白說的是什么,緊耦合不好,需要解耦。但實際上,page類的index方法,是依賴于Strategy的showAd,showCategory()方法,如果一個方法要刪除掉,比如刪除showAd,那還是要改page類的index方法。
2016-08-11
好的,非常感謝!