本节书摘来自华章社区《低功耗蓝牙开发权威指南》一书中的第2章,第2.6节凡事皆有状态,作者 (英)Robin Heydon,更多章节内容可以访问云栖社区“华章社区”公众号查看
2.6 凡事皆有状态
低功耗蓝牙背后有个基本的概念:任何事物都有状态。状态可以是任何东西:当前的温度、设备里电池的状态、设备名称或是对测量温度的地点的描述。它通过属性服务器上的属性协议对外公开。
状态并不局限于“可读”状态,还包括“可写”状态。比如有一台可以设置温度的自动调温器,另一台设备在判断房间应升温或降温之后,可对其进行设置。既然可以公开各种状态,自然也可以公开状态机的状态。通过使用显式的状态机属性值,设备可以清楚地提供其当前的状态。这为客户端随时断开连接提供了可能—在重新连接时,它们只需简单读取便可快速地确定对方的当前状态。
一些状态是可变的,甚至可以频繁改变。要快速实现服务器到客户端的状态传输,就必须支持状态信息的通知功能。通知直接从服务器发至客户端,无需客户端向服务器执行轮询,这种设计可以支持高效的应用,比如只有当电池出现状况时才向客户端通知电池状态,在此之前,客户端根本不用担心电池的状态。
这个简单的基于状态的模型使其得以构造一个非常高效的客户端–服务器架构。这也让应用能够采用面向对象的方法进行设计,重用大量的数据类型和服务行为。同时,这也减少了设备需要包含的代码数量以及用来保存代码的存储器数量,从而降低设备功耗。更少的代码还有另一个显著的好处—更少的错误。总之,越简单的系统越便宜,开发更迅速,包含更少的错误,更加强健,也更容易维护。正如罗伯特·布朗宁(Robert Browning)曾说的那样:“少即是多。”