EA&UML日拱一卒-状态图::不是模式的模式
来源:互联网 发布:tm商标域名 编辑:程序博客网 时间:2024/05/29 10:00
针对车辆的数字式信号的状态机设计完成之后,按道理可以继续设计标准的车辆信号或者行人信号等。但是如果你回头看看数字式车辆信号的设计,应该可以明白:它们其实都是大同小异。所以这部分就留给大家可以自己设计了。
不是模式的模式
作为对系统建模的基本模式,大致可以遵循以下的方式来进行。
隔离系统中的小的功能模块并根据前面提到的面向对象原则建模。
设定一个系统的管理者或者组织者来管理各个共通模块,用于实现和具体相关的部分。
虽然这并不是什么设计模式,但是按照这种方式建模,可以让设计有一个良好的开端。
在交通信号系统这个例子中,车辆信号灯,行人信号灯,行人按钮,停止按钮等就是可以共通化的小模块;而信号系统就是这个系统的组织者,为了将功能进一步分离,我们另外设置了信号系统引擎来协调和控制信号的动作。
信号系统引擎TrafficSystemEngine
先看图。
AllStop状态
系统启动时的准备状态,这段时间行人方向和车辆方向都是红灯。当状态持续一定时间以后,向VehicleGo状态迁移。离开本状态时,设定停止按钮为有效状态。
VehicleGo状态
车 辆正常通行状态。在进入这个状态时,向数字式车辆信号灯发送Red2Green信号并允许行人按钮操作。本状态收到来自行人通过请求按钮的命令时向 VehicleCounter状态迁移;接受来自系统停止按钮的命令时也会向VehicleCounter状态迁移,但是同时会设置 ShutdownFlag。
另外在本状态中设置了MininumTimeGreen和VehicleWaitButton两个子状态。
MininumTimeGreen维持一定的时间,在这个状态下如果行人按下通过请求按钮系统不会立即切换信号状态以保证足够的车辆通行时间。本状态期间发生的按钮按下时间都会被保存,以便在后面处理。
在进入VehicleWaitButton状态时首先向行人按钮模块发送HandlerReady信号,如果在MininumTimeGreen已经有行人按下通行按钮,则直接迁移到VehicleCounter状态;如果没有则切换行人按钮处理模块到立即报告状态,然后等待行人按下通行请求按钮。
VehicleCounter状态
显示绿灯倒计时。进入状态时,向车辆信号灯发送向倒计时状态迁移的通知。进入状态以后在UpdateCounter中按一定间隔向车辆信号灯发送时间更新要求。设定的时间经过以后,迁移到VehicleStopSafely状态。
VehicleStopSafely状态
车辆信号等黄灯闪烁状态。进入该状态时,向车辆信号灯发送向安全停止状态迁移的通知。离开状态时,向车辆信号灯发送向红灯状态迁移的通知。
退出该状态的条件是计时时间到。离开本状态后,如果ShutdownFlag为真则进入停止状态;否则进入PedestrainGo状态。
PedestrianGo状态
行人通行状态。进入该状态时,向行人信号灯发送向通行状态迁移的通知并向音响系统发送开始播放命令。经过一定时间以后退出改状态。离开状态时,向音响系统发送停止命令。另外在本状态下按下停止按钮也会退出本状态,但同时会设置ShutdownFlag为真。
PedestrainFinshCrossing状态
行 人停止通过状态,已经进入道路的,迅速离开。进入该状态时,向行人信号灯发送向停止通过状态迁移的通知。经过一定时间以后退出改状态。离开状态时,向行人 信号灯发送向禁止通行状态迁移的通知。离开本状态后,如果ShutdownFlag为真则进入停止状态;否则进入VehicleGo状态。
写在文章的最后
既然已经读到这里了,拜托大家再用一分钟时间,将文章转发到各位的朋友圈,微信群中。
- EA&UML日拱一卒-状态图::不是模式的模式
- EA&UML日拱一卒-状态图::开篇
- EA&UML日拱一卒-状态图::状态
- EA&UML日拱一卒-状态图::迁移
- EA&UML日拱一卒-状态图::状态机
- EA&UML日拱一卒-状态图::庖丁解牛
- EA&UML日拱一卒-状态图::重画按钮状态图
- EA&UML日拱一卒-状态图::面向对象的另一种理解
- EA&UML日拱一卒-状态图::状态机之间的同步
- EA&UML日拱一卒-状态图::延缓事件
- EA&UML日拱一卒-状态图::内部迁移
- EA&UML日拱一卒-状态图::基本要素画法
- EA&UML日拱一卒-状态图::子状态机
- EA&UML日拱一卒-状态图::延缓(处理)事件
- EA&UML日拱一卒-状态图::这还不算完
- 在EA中的UML图中插入设计模式的模板
- ea状态图
- 状态模式与状态图
- selenium实战:如何解决无论如何都无法定位的点击展开元素问题
- Activity(1)---搭建环境
- 工厂方法模式
- 再来看看堆栈清楚多了
- Verilog实现同步整形电路的原理及代码解析
- EA&UML日拱一卒-状态图::不是模式的模式
- Jzoj5409 Fantasy
- SSRF漏洞分析与利用
- 多个关联表数据库查询和hql的区别
- (6)OGNL--1:访问值栈中的普通属性、对象属性、普通方法、静态方法、自写set、map、list
- mybatis入门配置
- java实现字符串翻转功能
- (学习java)线索二叉树的实现以及遍历
- jvm之垃圾回收算法