《Head First 設(shè)計模式》書摘-策略模式/觀察者模式

歡迎訪問本人博客查看原文: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。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容