您的位置:首页 > 其它

状态机,消息循环,框架

2016-03-19 09:40 204 查看
任何一个相对独立的对象,都可以被抽象成一个状态机(其实任何事物都是以某种状态存在于世界中的,事物之间交互使得状态发生转移),每个状态机有若干个对所建模型有实际意义的状态,以及状态之间相互转变的触发条件,当触发条件也就是事件发生,状态发生转移,这就像面对对象的类,类里面封装有数据,还有方法接口,数据也就是状态机的状态,接口就是改变状态机状态的方法,大的状态机必然由数个小的状态机组成,所以类中有类和私有数据,私有接口,与外界无关。 消息循环传递事件,把一个个状态机连接在一起组成一个系统,各种事件改变各个状态机的状态,也就改变的系统的状态,场景类管理消息循环。

消息循环 ,各种对象将事件注册到事件容器,注册事件的对象到对象容器中,监察者监察所有事件是否触发,若是触发,则监察者从对象容其中选取注册事件的对象,调用其回调函数或者某种方式通知它。消息循环实质上是对象之间的通信,对象可能是物理世界的对象,也可以是抽象出来的,监察者充当路由功能。

举个例子:

一个房间里面有一群人,他们按照一列一列的坐好,每一列第一个是组长,他们名字叫浏览器,桌面,开始菜单等等的,每一列都由不同的组员,有的叫按钮,有的叫图标,输入框什么的,在房间门口站了一个人叫内核(或者应该是explorer,xorg),内核手里有一张表里面有所有人的名字,门外面有几个送快递的叫做鼠标,键盘,网络等,这几个快递员不停的送快递给房间里面的人,当然先是送到内核的手里,内核通过查表,把每个快递送到各个组长的手里,由各个组长在把快递传下去给组员,组员打开快递,阅读里面内容,按照指示执行一些动作。

框架  基础类库和消息循环,消息循环实际是通信过程,消息是通信协议。

拿ui来说,抽象出窗口,菜单,按钮图标等等的基础类库,以及这些类能够响应的消息类型(当然也可以自定义),由程序员选择类库中的类排列组合并且实例化,并设计消息响应过程,注册到框架中去,框架负责传递各种消息到对象,对象接收到消息按照设计的响应过程执行。框架抽象特定系统的一些对象和事件以及固定流程,搭建好通信路由机制,程序员学习并使用这些对象和事件,达到预定目的。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: