溫立輝
摘 要:針對交通信號系統(tǒng)中信號燈與控制中心的耦合問題,討論了觀察者模式的思想原理以及類組成結構,闡述觀察者模式的適用場景;同時分析了觀察者模式如何應用在交通信號系統(tǒng)中,進一步提升信號燈的合理性與靈活性。
關鍵詞:觀察者;訂閱;發(fā)布;主題;通知
觀察者模式(Publish/Subscribe)是一種行為模式,適用于多對象信息系統(tǒng)的交互場景中,其能有效的降低主題與對象間的依賴關系,解耦模塊間的耦合程度,進一步提升編程語言的抽象能力。
1 認識觀察者模式
觀察者模式作為一種解耦模式,是行為模式中的典范,其核心要素是主題類,也稱為模式中心,其一舉一動都會影響相關的追隨者—訂閱類,其行為體現(xiàn)了一種廣播式的傳遞效應。
在圖1中可以看到,該模式由四部分組成,分別是:主題、訂閱者以及兩個抽象基類的實現(xiàn)子類,每個部分具體功能結構描述如下。
1.1 抽象主題(Subject)
各具體主題類的繼承類,定義了注冊監(jiān)聽主題的方法(register),還存在發(fā)布主題更改的方法(publishNotice),具體的主題類實現(xiàn)由子類定義。
1.2 具體主題(ConcreteSubject)
抽象主題類的一個實現(xiàn)子類,負責定義具體的主題,需實現(xiàn)父類主題的定義方法(setNotice)。
1.3 抽象觀察者(Observer)
抽象觀察者父類是所有觀察者對外交互的門面,本類中需定義一個抽象的接收通知方法(receiveNotice),在抽象主題類中需引入該類型,作為對觀察者的操作引用。
1.4 具體觀察者(ConcreteObserver)
抽象觀察者的一個實現(xiàn)子類,在主題狀態(tài)發(fā)生變化時,負責接收消息更改具體觀察者自身的狀態(tài),需實現(xiàn)父類中receiveNotice方法。
2 在信號系統(tǒng)中應用
觀察者模式最典型的應用就是交通信號系統(tǒng)中,在該系統(tǒng)中有信號控制中心與為數(shù)眾多的信號燈。當信號控制中心發(fā)出對應的信號變換指令時,所有信號指示燈都需變更自身信號指示,也就是當信息控制中心這一主題發(fā)生變化時,所有的觀察者對象(信號燈)都要更改自身的狀態(tài),如圖2所示。
完成以上4步,就基本上實現(xiàn)了信號系統(tǒng)的主體結構,其余只完成相應的細節(jié),加上如界面組件及監(jiān)聽控制等方面即可。
3 結語
將一個系統(tǒng)分割成眾多的協(xié)作類增加了程序的靈活度,但同時也帶來負面影響,那就是需要維護分割出來后對象之間的一致性。在交通信號系統(tǒng)中,恰如其分的使用了訂閱/發(fā)布這一行為模式而有效降低了指揮中心與信號燈的耦合,極大的提高了系統(tǒng)的靈活性與裝配能力。
參考文獻:
[1] 劉凌云.觀察者模式在面向抽象編程中的應用[J].計算機與數(shù)字工程,2016,44(8):1474-1477,1522.
[2] 歐陽宏基,楊衛(wèi)忠,趙薔.觀察者模式在Java事件處理中的應用研究[J].微處理機,2013,34(4):77-79.
[3] 吳清壽.基于事件機制的觀察者模式及應用[J].重慶理工大學學報:自然科學版,2012,26(9):100-104.