一、觀察者模式
1、原理
觀察者模式又叫做發(fā)布-訂閱(Publish/Subscribe)模式,定義了一種一對(duì)多的依賴關(guān)系。讓多個(gè)觀察者對(duì)象同時(shí)監(jiān)聽某一個(gè)主題對(duì)象,這個(gè)主題對(duì)象在狀態(tài)上發(fā)生變化時(shí),會(huì)通知所有觀察者對(duì)象,使它們能夠自動(dòng)更新自己。
軟件系統(tǒng)常常要求在某一個(gè)對(duì)象的狀態(tài)發(fā)生變化的時(shí)候,某些其它的對(duì)象做出相應(yīng)的改變。觀察者模式是解決該類問題的很優(yōu)秀的方案,使用該模式減少對(duì)象之間的耦合,提升系統(tǒng)的可擴(kuò)展性。
2、關(guān)鍵角色
觀察者模式有下面幾個(gè)關(guān)鍵的角色,如下:
- 抽象主題(Subject):抽象主題提供一組接口,可以增加和刪除觀察者對(duì)象,每個(gè)主題都可以有任何數(shù)量的觀察者
- 具體主題(ConcreteSubject):保存注冊(cè)的觀察者及主題自身的狀態(tài),當(dāng)主題的狀態(tài)發(fā)生變化時(shí)通知觀察者
- 抽象觀察者(Observer):為所有的具體觀察者定義一個(gè)接口,在得到主題的通知時(shí)更新自己
- 具體觀察者(ConcreteObserver):保存主題的狀態(tài),實(shí)現(xiàn)抽象觀察者所要求的更新接口,以便使本身的狀態(tài)與主題的狀態(tài)保持一致
3、UML類圖
下面是觀察者模式對(duì)應(yīng)的UML類圖,如下:
文章來源:http://www.zghlxwxcb.cn/news/detail-814626.html
4、使用場(chǎng)景
適用場(chǎng)景文章來源地址http://www.zghlxwxcb.cn/news/detail-814626.html
- 對(duì)象間存在一對(duì)多關(guān)系,一個(gè)對(duì)象的狀態(tài)發(fā)生改變會(huì)影響其他對(duì)象
- 實(shí)現(xiàn)類似廣播機(jī)制的功能,不需要知道具體收聽者,只需分發(fā)廣播,系統(tǒng)中感興趣的對(duì)象會(huì)自動(dòng)接收該廣播
到了這里,關(guān)于行為型模式 | 觀察者模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!