
歡迎訪問本人博客查看原文:http://wangnan.tech
策略模式
定義:
定義算法族,分別封裝起來,讓他們之間可以互相替換,此模式讓算法的變化獨立于使用算法的客戶
oo基礎(chǔ):
抽象 封裝 多態(tài) 繼承
get到的oo原則:
- 封裝變化
- 多用組合,少用繼承
- 針對接口編程,不針對實現(xiàn)編程
要點
- 知道O O基礎(chǔ),并不足以讓你設(shè)計出良好的O O系統(tǒng)。
- 良好的O O設(shè)計必須具備可復(fù)用、可擴充、可維護三個特性
- 模式可以讓我們建造出具有良好O O 設(shè)計質(zhì)量的系統(tǒng)。
- 模式被認(rèn)為是歷經(jīng)驗證的O O設(shè)計經(jīng)驗。
- 模式不是代碼,而是針對設(shè)計問題的通用解決方案。你把它們應(yīng)用到特定的應(yīng)用中。
- 模式不是被發(fā)明,而是被發(fā)現(xiàn)
- 大多數(shù)的模式和原則,都著眼于軟件變化的主題。
- 大多數(shù)的模式都允許系統(tǒng)局部改變獨立于其他部分。
- 我們常把系統(tǒng)中,會變化的部分抽出來封裝
- 模式讓開發(fā)人員之間有共享的語言, 最大化溝通的價值。
觀察者模式
定義
在對象之間定義一對多的依賴,這樣一來,當(dāng)一個對象改變狀態(tài),依賴它的對象都會收到通知,
并自動更新。
get到的oo原則
為交互對象之間的松耦合設(shè)計而努力
要點
- 觀察者模式定義了對象之間一對多的關(guān)系。
- 主題(也就是可觀察者)用一個共同的接口來更新觀察者
- 觀察者和可觀察者之間用松耦合方式結(jié)合(loosecoupling),可觀察者不知道觀察
者的細(xì)節(jié),只知道觀察者實現(xiàn)了觀察者接口。 - 使用此模式時,你可從被觀察者處推(push)或拉(pull)數(shù)據(jù)(然而,推的方式被認(rèn)為更“正確”)。
- 有多個觀察者時,不可以依賴特定的通知次序。
- J a v a有多種觀察者模式的實現(xiàn),包括了通用的java.util.Observable。
- 要注意java.util.Observable實現(xiàn)上所帶來的一些問題。
- 如果有必要的話,可以實現(xiàn)自己的Observable,這并不難,不要害怕。
- Swing大量使用觀察者模式,許多GUI框架也是如此。
- 此模式也被應(yīng)用在許多地方,例如:JavaBeans、RMI。