23大設計模式之觀察者模式

2021-07-14 12:14:32 字數 1695 閱讀 6608

常用的設計模式有23種,總體來說設計模式分為三大類:

1,建立型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。

2,結構型模式,共七種:介面卡模式、裝飾器模式、**模式、外觀模式、橋接模式、組合模式、享元模式。

3,行為型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、直譯器模式。

今天主要講一下行為型模式中的觀察者模式.

觀察者模式是類和類之間的關係,不涉及到繼承。觀察者模式很好理解,類似於郵件訂閱和rss訂閱,當我們瀏覽一些部落格或wiki時,經常會看到rss圖示,就這的意思是,當你訂閱了該文章,如果後續有更新,會及時通知你。其實,簡單來講就一句話:當乙個物件變化時,其它依賴該物件的物件都會收到通知,並且隨著變化!物件之間是一種一對多的關係。先來看看關係圖:

![這裡寫描述](

我解釋下這些類的作用:mysubject類就是我們的主物件,observer1和observer2是依賴於mysubject的物件,當mysubject變化時,observer1和observer2必然變化。abstractsubject類中定義著需要監控的物件列表,可以對其進行修改:增加或刪除被監控物件,且當mysubject變化時,負責通知在列表內存在的物件。我們看實現**:

乙個observer介面:

public

inte***ce observer

兩個實現類:

public

class

observer1

implements

observer

}

public

class

observer2

implements

observer

}

subject介面及實現類:

public

inte***ce subject

public

abstract

class

abstractsubject

implements

subject

@override

public

void

del(observer observer)

@override

public

void

notifyobservers()

} }

public

class

mysubject

extends

abstractsubject

}

測試類:

public class observertest   

}

輸出:

update self!

observer1 has received!

observer2 has received!

這些東西,其實不難,只是有些抽象,不太容易整體理解,建議讀者:根據關係圖,新建專案,自己寫**(或者參考我的**),按照總體思路走一遍,這樣才能體會它的思想,理解起來容易!

23種設計模式 觀察者模式

在軟體構建過程中,我們需要為某些物件建立一種 通知依賴關係 乙個物件 目標物件 的狀態發生改變,所有的依賴物件 觀察者物件 都將得到通知。如果這樣的依賴關係過於緊密,將使軟體不能很好地抵禦變化。使用物件導向技術,可以將這種依賴關係弱化,並形成一種穩定的依賴關係。從而實現軟體體系結構的松耦合。定義物件...

23種設計模式之觀察者模式(Observer)

觀察者模式又稱為發布 訂閱模式 模型 檢視模式 源 模式或從屬者 dependents 模式,是一種物件的行為型模式。它定義了物件之間的一種一對多的依賴關係,使得每當乙個物件狀態發生改變時,其相關依賴物件都得到通知並被自動更新。觀察者模式的優點在於實現了表示層和資料層的分離,並定義了穩定的更新訊息傳...

設計模式之觀察者模式

首先說了乙個自己的小例子吧,前兩天我的乙個朋友來找我玩,因為路途比較遠,我需要知道他的位置,然後安排好時間去接他,那麼在這個例子中,我就是乙個觀察者,需要時時刻刻觀察他的位置,我的朋友就是乙個被觀察者。那麼需要知道我朋友的位置,就有兩種方式,第一,我自己打 問,第二,我的朋友告訴我,下面我們來看看這...