当前位置: 首页 > 产品展示 > 数码模块

火博sports

PRODUCTS
×

火博sports基于观察者模式设计的框架-REB使代码模块化

发布时间:2024-02-24 10:23:11 来源:火博体育首页 作者:HB火博APP官网

  设计模式里面的观察者模式,一直是作者想去设计一套框架来阐述这一个模式,因此REB(Rice Event Broker)就是为了完成观察者模式的一个框架。

  观察者模式(Observer Pattern)是一种行为设计模式,用于定义对象之间的一对多依赖关系,使得一个对象的状态变化会通知其所有依赖者并自动更新它们的状态。这个模式涉及两种主要类型的对象:

  被观察者:也称为主题或可观察者,是一个对象,它维护一组观察者(或依赖者)并提供方法来添加、删除和通知这些观察者。当被观察者的状态发生变化时,它会通知所有已注册的观察者。

  观察者:观察者是依赖于被观察者的对象,它们实现一个接口或抽象类,包含一个更新方法(通常称为update),用于接收并处理被观察者的状态变化通知。

  被观察者注册观察者:被观察者维护一个观察者列表,并提供注册(添加)和注销(删除)观察者的方法。

  被观察者状态变化:当被观察者的状态发生变化,它会遍历其观察者列表,调用每个观察者的更新方法,将状态变化通知给它们。

  「解耦性:」观察者模式可以帮助降低对象之间的耦合度。被观察者和观察者之间的关系是松散的,它们可以独立演化,而不会影响彼此的具体实现。

  「可扩展性:」你可以轻松地添加新的观察者,而不需要修改被观察者的代码。这种扩展性使你能够动态地增加或删除观察者,以满足不同的需求。

  「通知机制:」观察者模式允许被观察者通知观察者,从而使观察者能够在适当的时候进行响应。这可以帮助确保数据的一致性,因为观察者会立即知道被观察者的状态变化。

  「分布式事件处理:」观察者模式常用于实现分布式事件处理系统,其中多个观察者可以远程订阅和接收事件通知。

  「可重用性:」观察者模式可以在不同的应用中重复使用,因为它是一个通用的设计模式,不受特定应用领域的限制。

  「灵活性:」观察者模式可以用于许多不同的场景,如用户界面更新、事件处理、数据同步等,使得代码更加灵活和可维护。

  「支持一对多关系:」观察者模式支持一对多的依赖关系,这意味着一个被观察者可以同时通知多个观察者,从而实现多个对象之间的协同工作。

  REB框架分为3层:osal(OS抽象层),REB核心层(包含发布者,观察者,中间人),应用层(调用REB的模块或应用)。

  osal(OS抽象层):为了能让此框架应用于不同的操作系统,且不用修改框架本身,所以提供os适配层。

  publisher(发布者):REB框架的发布者支持4种接口:默认发送接口,默认发送完释放数据内存释放接口,紧急发送接口,紧急发送完数据内存释放接口。

  observer(观察者):REB框架的观察者支持3种接口:信号接收接口,回调接收接口,线程接收接口。

  broker(中间人):REB框架的中间人支持两种接口:观察者只观察一次接口,观察者观察多次接口。

  REB是以事件为导向,事件类型由主事件类型和次事件类型组成,事件类型占用32个位,主事件类型占高16位,次事件类型占低16位。一般:以网络为例:主事件类型为:net_type,次事件类型为:link_up,link_down等。

  我创建的观察者之后,需要通过此接口将观察者关联到broker中。当发布者发布事件,可以通过broker找到对用的观察者。使用该接口观察者只观察一次事件。

  我创建的观察者之后,需要通过此接口将观察者关联到broker中。当发布者发布事件,可以通过broker找到对用的观察者。使用该接口观察者只观察多次事件。

  该接口是创建回调模式的观察者,当事件产生时,broker会通过回调的方式通知观察者事件的到来。

  该接口是创建任务模式的观察者,当事件产生时,broker会通过创建一个线程,然后由独立的线程将事件通知给观察者。

  该接口是发布者发布事件接口,它是采用先进先出的方式发送消息,并且将消息发送给所有观察者之后,数据的内存会执行释放。

  该接口是发布者发布事件接口,它是采用插队的方式发送消息,它会将发布的消息插入消息队列的头部。

  该接口是发布者发布事件接口,它它是采用插队的方式发送消息,它会将发布的消息插入消息队列的头部。并且将消息发送给所有观察者之后,数据的内存会执行释放。

  REB已经被合并到RT-THREAD软件包中,并且得到RT-THREAD技术总监的认可。开源链接:

  │├── subject.js│└── utils.js└── profiler └── index.js从名字可以看出来,这些

  之外的属性值变化,当属性值发生改变时可以对此作出响应。有如下特点: 1,不仅可以在属性值改变后触发didSet,也可以在属性值改变前触发willSet

  1.环境介绍平台:AT32F415单片机,雅特力公司的AT32系列单片机其实跟STM32系列单片机大同小异,包括库函数

  提供一种方法来时对象“”其他对象,而不需要修改任何数据服务器。在嵌入式领域,这意味着数据能够很容易分享给其他元素。

  的屏幕布局控件设计 /

  ,是四人组(GoF,即 Erich Gamma、Richard Helm、Ralph Johnson

  的实例分析 /

  建议你为发布者类添加订阅机制, 让每个对象都能订阅或取消订阅发布者事件流。 不要害怕! 这并不像听上去那么复杂。 实际上, 该机制包括 1) 一个用于存储订阅者对象引用的列表成员变量; 2) 几个用于添加或删除该列表中订阅者的公有方法。

  ,超详细! /

  回调机制 /

  【昉·星光 2 高性能RISC-V单板计算机体验】以容器的方式安装 HomeAssistant


火博sports