APP下载

观察者模式在交通信号系统中的应用

2017-10-21温立辉

科技风 2017年8期
关键词:观察者主题

温立辉

摘 要:针对交通信号系统中信号灯与控制中心的耦合问题,讨论了观察者模式的思想原理以及类组成结构,阐述观察者模式的适用场景;同时分析了观察者模式如何应用在交通信号系统中,进一步提升信号灯的合理性与灵活性。

关键词:观察者;订阅;发布;主题;通知

观察者模式(Publish/Subscribe)是一种行为模式,适用于多对象信息系统的交互场景中,其能有效的降低主题与对象间的依赖关系,解耦模块间的耦合程度,进一步提升编程语言的抽象能力。

1 认识观察者模式

观察者模式作为一種解耦模式,是行为模式中的典范,其核心要素是主题类,也称为模式中心,其一举一动都会影响相关的追随者—订阅类,其行为体现了一种广播式的传递效应。

在图1中可以看到,该模式由四部分组成,分别是:主题、订阅者以及两个抽象基类的实现子类,每个部分具体功能结构描述如下。

1.1 抽象主题(Subject)

各具体主题类的继承类,定义了注册监听主题的方法(register),还存在發布主题更改的方法(publishNotice),具体的主题类实现由子类定义。

1.2 具体主题(ConcreteSubject)

抽象主题类的一个实现子类,负责定义具体的主题,需实现父类主题的定义方法(setNotice)。

1.3 抽象观察者(Observer)

抽象观察者父类是所有观察者对外交互的门面,本类中需定义一个抽象的接收通知方法(receiveNotice),在抽象主题类中需引入该类型,作为对观察者的操作引用。

1.4 具体观察者(ConcreteObserver)

抽象观察者的一个实现子类,在主题状态发生变化时,负责接收消息更改具体观察者自身的状态,需实现父类中receiveNotice方法。

2 在信号系统中应用

观察者模式最典型的应用就是交通信号系统中,在该系统中有信号控制中心与为数众多的信号灯。当信号控制中心发出对应的信号变换指令时,所有信号指示灯都需变更自身信号指示,也就是当信息控制中心这一主题发生变化时,所有的观察者对象(信号灯)都要更改自身的状态,如图2所示。

完成以上4步,就基本上实现了信号系统的主体结构,其余只完成相应的细节,加上如界面组件及监听控制等方面即可。

3 结语

将一个系统分割成众多的协作类增加了程序的灵活度,但同时也带来负面影响,那就是需要维护分割出来后对象之间的一致性。在交通信号系统中,恰如其分的使用了订阅/发布这一行为模式而有效降低了指挥中心与信号灯的耦合,极大的提高了系统的灵活性与装配能力。

参考文献:

[1] 刘凌云.观察者模式在面向抽象编程中的应用[J].计算机与数字工程,2016,44(8):1474-1477,1522.

[2] 欧阳宏基,杨卫忠,赵蔷.观察者模式在Java事件处理中的应用研究[J].微处理机,2013,34(4):77-79.

[3] 吴清寿.基于事件机制的观察者模式及应用[J].重庆理工大学学报:自然科学版,2012,26(9):100-104.

猜你喜欢

观察者主题
用追击相遇的模型解释多普勒效应
浅谈指南背景下教师在表演游戏中的引导作用
幼儿游戏中教师角色的定位
基于Android的智慧竞赛APP设计与开发
教师在幼儿游戏教育教学中发挥的作用
浅谈中国侠文化背景下的武侠电影
《风雨哈佛路》的主题评析与文化解读
浅析古诗词教学中意象教学的策略
农村幼儿园“幼小衔接”的“五步走”
岩井俊二的青春片摭谈