課程
/后端開發(fā)
/Java
/觀察者模式
為什么obsrever定義成了接口,但是subject定義成了父類?
2018-06-17
源自:觀察者模式 2-2
正在回答
接口和抽象類都是所謂的代碼復用時使用。
在使用時,要優(yōu)先注意繼承和接口概念,所有子類是一類事物(有兄弟關(guān)系)時,才應該是繼承關(guān)系,不是一類事物就不要繼承改用接口比較好;
當不符合繼承條件時,使用接口,接口可以理解為標準,只定義大致方向,不論具體實現(xiàn)的時候使用;
當符合繼承條件時,且你至少有一個方法是具體實現(xiàn)的時候,即已知時,可以考慮使用抽象類;
我個人理解是,接口更像是人為定義一系列的行為,是一種賦予的感覺;父類(抽象類)是人為抽取共性,是一種提煉的感覺。
至于優(yōu)先級,都是看具體情況的,不過接口總體來說是比繼承要靈活,畢竟是多實現(xiàn)、單繼承。
當然還有接口和繼承都用的情況,這能實現(xiàn)更多變的情況。
多寫項目,遇到代碼重復的時候,就多想想,慢慢就懂得接口和繼承的好處和運用了。
慕粉1149573729
subject里面的方法是目標對象通用的,同時也是清楚的,所以定義成父類,則其具體目標對象就擁有了所有通用方法;
obsrever則是提供一個標準行為updata,是未實現(xiàn)方法,其具體實現(xiàn)方法需要根據(jù)具體的觀察者行為才能定義,所以應該為接口;
慕移動6842083 提問者
舉報
解決發(fā)布/訂閱問題的觀察者模式,以及何時使用觀察者模式
2 回答Subject為什么不用抽象類
1 回答感覺像接口
2 回答有沒有在一個目標subject中通過對狀態(tài)的set方法 直接notifyObserver 這樣的
6 回答如果觀察者數(shù)量有許多,有人需要接受下雨通知,有人需要下雪,有人需要晴天,該如何來設(shè)計,肯定不能在目標借口寫邏輯了
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)微信公眾號
2018-06-19
接口和抽象類都是所謂的代碼復用時使用。
在使用時,要優(yōu)先注意繼承和接口概念,所有子類是一類事物(有兄弟關(guān)系)時,才應該是繼承關(guān)系,不是一類事物就不要繼承改用接口比較好;
當不符合繼承條件時,使用接口,接口可以理解為標準,只定義大致方向,不論具體實現(xiàn)的時候使用;
當符合繼承條件時,且你至少有一個方法是具體實現(xiàn)的時候,即已知時,可以考慮使用抽象類;
我個人理解是,接口更像是人為定義一系列的行為,是一種賦予的感覺;父類(抽象類)是人為抽取共性,是一種提煉的感覺。
至于優(yōu)先級,都是看具體情況的,不過接口總體來說是比繼承要靈活,畢竟是多實現(xiàn)、單繼承。
當然還有接口和繼承都用的情況,這能實現(xiàn)更多變的情況。
多寫項目,遇到代碼重復的時候,就多想想,慢慢就懂得接口和繼承的好處和運用了。
2018-06-19
subject里面的方法是目標對象通用的,同時也是清楚的,所以定義成父類,則其具體目標對象就擁有了所有通用方法;
obsrever則是提供一個標準行為updata,是未實現(xiàn)方法,其具體實現(xiàn)方法需要根據(jù)具體的觀察者行為才能定義,所以應該為接口;