天天看點

設計模式總結-行為模式分類:定義:模闆方法模式:職責連模式:通路者模式:

    了解了這麼多模式,在學習的過程中也設計到了很多行為模式,至于有哪些?可以一一道來。

疊代器模式

中介者模式

備忘錄模式

觀察者模式

狀态模式

政策模式

模闆方法模式

下文

通路者模式

職責連模式

指令模式

行為包括這麼多,那麼到底什麼是行為模式呢?

    行為模式是對在不同的對象之間劃分責任和算法的抽象化。行為模式不僅僅是關于類和對象的,而且是關于它們之間的互相作用的。可分為類的行為模式和對象的行為模式。

類的行為模式:類的行為模式使用繼承關系在幾個類之間配置設定行為

對象的行為模式:使用對象的聚合來配置設定行為

     看到這個模式第一感覺就是照葫蘆畫瓢的一個模式,應該算是最常用的一種模式吧!最近臨近畢業,很喜歡那些在外打工的同胞回來看我,因為回來就可以請我吃大餐啊!對于吃飯,當然也有固定的模式,點單-吃東西-買單。就這麼簡單的一個流程呗!關鍵就在于點什麼餐了     點單,買單的過程是重複的,所有重複的代碼可以上升到父類,而不是讓每個點餐都重複這個過程。這就是所謂的模仿方法模式。

定義:

    定義一個操作中的算法的骨架,而将一些步驟延遲到子類中,模闆方法使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。

結構圖:

設計模式總結-行為模式分類:定義:模闆方法模式:職責連模式:通路者模式:

基本代碼:

abstractclass是抽象類,其實也就是一抽象模闆,定義并實作了一個模闆方法。

concreteclass,實作父類所定義的一個或多個抽象方法。每一個abstractclass都可以有任意多個concreteclass與之對應,而每一個concreteclass都可以給出這些抽象方法的不同實作,進而使得頂級邏輯的實作各有不相同

用戶端調用:

   “工作這麼長時間了,為什麼就不給我漲工資呢?”滿含抱怨的口氣說道。

     “我也想給你長工資啊!看着你每天的盡心盡力,可是我沒有這個權利啊!”經理很耐心的講述到。

     “如果你是因為什麼事情而請假一兩天的話,我到可以有這個權利處理,可是畢竟财政大權不在咱們手裡啊!心有餘而力不足……”經理補充道。

      其實我也知道經理人好,是以本以為這件事情就這樣不了了之了,可是某天經理說總經理同意給你加工資了,你在公司的表現都衆人皆知。這樣當然就高興了!

      把自己處理不了的事情交給下一個人,總會有一個能夠有權利來解決。這就是所謂的職責連模式。

設計模式總結-行為模式分類:定義:模闆方法模式:職責連模式:通路者模式:

      使多個對象都有機會處理請求,進而避免請求的發送者和接受者之間的耦合關系。将這個對象連成一條鍊,并沿着這條鍊傳遞該請求,直到有一個對象處理它為止。

用戶端代碼,向鍊上的具體處理者對象送出請求        

handler類,處理一個處理請示的接口

具體的處理者對象類

好處:

       使用此模式,最主要的目的是想讓請求不間斷,而且我還可以随時地增加或修改處理一個請求的結構。增強了給對象指派職責的靈活性。當然如果一個請求有可能到了鍊的末端都得不到處理,或者因為沒有正确配置而得不到處理,這就很糟糕了,是以在使用的時候一定要考慮全面。

       很喜歡沒事的時候去超市的時候小逛一次,随便找個理由來犒勞一下自己,盡管沒有什麼需要犒勞的!不過這次算是一次小小的成就吧!最起碼這次談論到購物我明白了一個複雜的設計模式啊!

設計模式總結-行為模式分類:定義:模闆方法模式:職責連模式:通路者模式:

      表示一個作用于某對象結構中的各個元素的操作,它使你可以在不改變各元素的類的前提下定義作用于這些元素的新操作。

      通路者模式适用于資料結構相對穩定的系統,就如上述中,如果通路者過多又或者購買的東西過多的話,那麼抽象方法則就變得不穩定了。 通路者模式把資料結構和作用于結構上的操作之間的耦合解脫開,使得操作集合可以相對自由地演化。

目的:

       把處理從資料結構分離出來。前提當然是有比較穩定的資料結構哈!

使用此模式的優點:

       就是增加新的操作很容易,因為增加新的操作就意味着增加一個新的通路者。通路者模式将有關的行為集中到一個通路者對象中。

       描述了這麼多,就這三種模式而言,其實他們三個共同的特點顧名思義都屬于行為型模式了,控制着類和對象的行為。至于不同,其實每個模式都有每個模式的優點:

模闆方法模式:定義一個模闆,這樣的話,就是對算法的結構有着更多的控制權,不至于有重複的代碼啊!

職責連模式:目的就是讓過程不間斷,每個對象都有着各自的分工,減少了對象之間的耦合。

通路者模式:最主要的一點則是符合單一職責原則,元素類中需要封裝在通路者中的操作必定是與元素本身關系不大且是易變的操作,并且由于已經封裝好,是以在不改變元素類本身的前提下,可以實作對變化部分的擴充,但是最大的不便也是最大的特點就是增加閑的元素比較困難,是以在不确定的狀況下,一般以不用的。

繼續閱讀