行爲型模式(一)

觀察者模式:定義對象間的一種一對多的依賴關係,當一個對象的狀態發生改變時,所依賴於它的對象都將獲得通知並自動更新。算法

  具體對象之間,相互知道的越少越好,這樣發生改變時纔不至於相互影響。日誌

  目標和觀察者之間不是緊密耦合的,它們能夠屬於一個系統中的不一樣抽象層次,目標知道的僅僅是它有一些列的觀察者,每一個觀察者實現Observer的簡單接口,觀察者屬於哪一個具體類,目標是不知道的。server

模板模式:定義一個操做的算法骨架,而將一些步驟延遲到子類中,模板方法使得子類能夠不改變一個算法的結構便可以從新定義該算法的某些特定步驟。 對象

  模板模式由一個抽象類組成,這個抽象類定義了須要覆蓋的可能有不一樣實現的模板方法,每一個從這個抽象類派生的具體類將爲此模板實現新方法。接口

命令模式:將一個請求封裝成一個對象,從而使你可用不一樣的請求對客戶進行參數化;能夠對請求排隊或記錄請求日誌,以及支持可撤銷的操做。it

  請求發送者和具體實現者分離:將調用操做的對象與知道如何實現該操做的對象解耦。能夠在不一樣時刻指定、排列和執行請求。模板

狀態模式:容許一個對象在其內部狀態改變時改變它的行爲,讓對象看起來彷佛修改了它的類。擴展

  分支條件大量運用的問題:不會變化和不用擴展的軟件不多,那麼若是把這樣的分支語句進行分解並封裝成多個子類,利用多態來提升其可維護、可擴展的須要、是很是重要的。軟件

  狀態模式提供了一個更好的辦法來組織與特定狀態相關的代碼,決定狀態轉移的邏輯不在單塊的if或switch中,而是分佈在各個狀態子類之間,因爲全部與狀態相關的代碼都存在於某個狀態子類中,因此經過定義新的子類能夠很容易地增長新的狀態和轉換。請求

職責鏈模式:使多個對象都有機會處理請求,從而避免請求的發送和接收者之間的耦合關係。將對這些對象連成一條鏈。並沿着這條鏈傳遞請求,直到有一個對象處理它爲止。

  有多個對象能夠處理同一個請求,哪一個對象處理該請求事先並不知道,要在運行時刻自動肯定,此時最好的辦法就是讓請求發送者和具體請求者分離,讓客戶在不明確指定接收者的狀況下,提交一個請求,而後由全部能處理這請求的對象連成一條鏈,並沿着這條鏈傳遞該請求,直到有一個對象處理它爲止。

相關文章
相關標籤/搜索