1. 程式人生 > >【大話設計模式】——行為型模式總結(一對多)

【大話設計模式】——行為型模式總結(一對多)

    根據上上一篇部落格的分類,這篇部落格總結一下有一對多關係的模式:職責鏈,中介者,觀察者,迭代器。其實這幾個模式沒什麼大關係,也沒什麼可以比較的,硬是讓我把它們放在了一起。

一、職責鏈(Chain of responsibility)

1、官方解釋

    使多個物件都有機會處理請求,從而避免請求的傳送者和接受者之間的耦合關係。將這個物件連成一條鏈,並沿著這條鏈傳遞該請求,知道有一個物件處理它為止。

2、類圖


3、個人理解 

    說到職責鏈,我就想起了咱們提高班的請假條例,兩個小時以內的可以找紀委請假,超過兩個小時得要找米老師請假;還有機房收費系統的計算上機費用的時候應該也可以用到職責鏈模式。當然也可以用到策略模式,返錢等等。

二、中介者(Mediator)

1、官方解釋

    用一箇中介者物件來封裝一系列的物件互動。中介者使各物件不需要顯示地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的關係。

2、類圖


3、個人理解

           中介者就是一個調停者,例如身邊的兩個朋友發生衝突,這就要求我去解決這個衝突,傳話等等。這兩個朋友是不會直接通訊的,是通過我來傳遞資訊的。

三、觀察者(Observer)

1、官方解釋

    定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某一個主題物件。這個主題物件在狀態發生變化時,會通知所有觀察者物件,使它們能夠自動更新自己。

2、類圖


3、個人理解

       觀察者,身邊處處是這樣的例子,這讓我想起了高中的時候,我們班晚自習集體用多媒體放電影(鬼片~~),學生處的晚上會查自習,一般都是會有一個人通風報信的,但是如果這個人不再呢,那就直接是學生處的人通知我們了,就要有一個抽象的通知者。不過往往都是學生處的親自通知我們,等著扣分班主任發火。

四、迭代器(Iterator)

1、官方解釋

    提供一種方法順序訪問一個聚合物件中各個元素,而又不暴露該物件的內部表示。

2、類圖


3、個人理解

      老師判作業,學委把作業按照學號排好交給老師,老師可以從前往後判,也可以從後往前判,最重要的是每一份作業都會判完,不會落下任何一個同學的作業。這不就相當於一個迭代器模式嘛!

五、總結

    從模式對映到現實生活比較容易,可是從現實生活對映到模式卻有點難。要去判斷這到底是用的哪個模式啊,說到底還是學的不夠深,一口不能撐死個胖子,這一遍就先學到這吧,後面還會學很多遍呢!