小程序设计模式之状态模式实践-蓝牙配网_小程序 蓝牙状态模式

这篇具有很好参考价值的文章主要介绍了小程序设计模式之状态模式实践-蓝牙配网_小程序 蓝牙状态模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

*/
disconnect() {}

/**
* 蓝牙连接成功
* @see UnConnectState
*/
connectSuccess() {}

/**
* 蓝牙连接失败
* @see UnConnectState
*/
connectFail() {}

/**
* 路由数据接收完成
* @see ReceivedState
*/
received() {}

/**
* 认证中
* @see AuthenticatingState
*/
authenticating() {}

/**
* 认证完成
* @see AuthenticatedState
*/
authenticated() {}

/**
* 充电完成
* @see WifiConnectingState
*/
wifiConnecting() {}

/**
* 时间同步完成
* @see WifiConnectedState
*/
wifiConnected() {}

/**
* 获取状态ID
*/
getStateId() {
return 0;
}

/**
* 释放资源
* @see ConnectedState
*/
onRelease() {}
}

module.exports = AbstractState


### 实现各状态类


#### UnConnectState类



import AbstractState from ‘./AbstractState’

class UnConnectState extends AbstractState { // 未连接状态只处理连接的事件
constructor(stateController) {
super(stateController);
}

/**
* @override
* @description 连接设备
*/
connect() { // 这里只是实例,具体需要怎么处理还要更具体的业务逻辑
const ble = this.stateController.getBLE();
if (ble) {
this.stateController.setState(this.stateController.getConnectingState());
this.stateController.notifyAll();
ble.initBleAdapter();
}
}

getStateId() {
return 100;
}
}
module.exports = UnConnectState


#### ConnectingState类



import AbstractState from ‘./AbstractState’

class ConnectingState extends AbstractState { // 蓝牙连接状态的类
constructor(stateController) {
super(stateController);
}

connectSuccess() {
this.stateController.setState(this.stateController.getConnectedState());
this.stateController.notifyAll();
}

connectFail() {
this.stateController.setState(this.stateController.getUnConnectState());
this.stateController.notifyAll();
}

disconnect() {
this.stateController.setState(this.stateController.getUnConnectState());
this.stateController.notifyAll();
}

getStateId() {
return 101;
}
}
module.exports = ConnectingState


#### ConnectedState类



import AbstractState from ‘./AbstractState’

class ConnectedState extends AbstractState {
constructor(stateController) {
super(stateController);
}

connectFail() {
this.stateController.setState(this.stateController.getUnConnectState());
this.stateController.notifyAll();
// 结束发送路由的命令
}

authenticating() { this.stateController.setState(this.stateController.getAuthenticatingState());
// 发送认证的指令
}

disconnect() {
this.stateController.setState(this.stateController.getUnConnectState());
this.stateController.notifyAll();
}

getStateId() {
return 102;
}

onRelease() {

}
}
module.exports = ConnectedState


由于篇幅,其他的状态类就不在这里写了。


#### StateController类



import UnConnectState from ‘./UnConnectState’;
import ConnectingState from ‘./ConnectingState’;
import ConnectedState from ‘./ConnectedState’;

const DEBUG = true;
const TAG = ‘StateController#’;

let mUnConnectState = null;
let mConnectingState = null;
let mConnectedState = null;
let mState = null;

let mBle = null;

let STATE_CONTROLLER = null;
/** 页面监听器列表 */
let mPageObservers = new Set();

class StateController {
constructor() {
mUnConnectState = new UnConnectState(this);
mConnectingState = new ConnectingState(this);
mConnectedState = new ConnectedState(this);
mState = mUnConnectState;
}

static getInstance() {
if (STATE_CONTROLLER == null) {
STATE_CONTROLLER = new StateController();
}
return STATE_CONTROLLER;
}

addPage(page) {
mPageObservers.add(page);
}

deletePage(page) {
mPageObservers.delete(page);
}

clearPages() {
mPageObservers.clear();
}

/**
* 连接设备,在调用之前确保已经调用过#setDeviceId(deviceId)
*/
connect() {
mState.connect();
}

/**
* 断开设备连接
*/
disconnect() {
mState.disconnect();
}

/**
* 设备连接成功
*/
connectSuccess() {
mState.connectSuccess();
}

/**
* 设备连接失败
*/
connectFail() {
mState.connectFail();
}

/**
* 设置状态
* @param {*} state 需要设置的状态
* @see UnConnectState
* @see ConnectingState
* @see ConnectedState
*/
setState(state) {
mState = state;
}

/**
* 释放状态资源
*/
onRelease() {
mState.onRelease();
}

/**
* 页面退出
*/
onUnload() {
this.disconnect();
this.onRelease();
}

getState() {
return mState;
}

getUnConnectState() {
return mUnConnectState;
}

getConnectingState() {
return mConnectingState;
}

getConnectedState() {
return mConnectedState;
}

getStateId() {
return mState.getStateId();
}

getBLE() {
if (mBle == null)
mBle = BLE.getInstance();
return mBle;
}

notifyAll() {
this.notifyState(mState.getStateId());
}

/**
* 通知页面当前的状态
* @param {*} status
*/
notifyState(status) {
mPageObservers.forEach((pageObserver) => {
pageObserver(status);
});
}

}

module.exports = StateController


#### 使用新的设计



import State from ‘./state’
import StateController from ‘./StateController’
class StateTest {
constructor() {}

onClick() {
// let state = new State();
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数嵌入式工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

小程序设计模式之状态模式实践-蓝牙配网_小程序 蓝牙状态模式,程序员,嵌入式

小程序设计模式之状态模式实践-蓝牙配网_小程序 蓝牙状态模式,程序员,嵌入式

小程序设计模式之状态模式实践-蓝牙配网_小程序 蓝牙状态模式,程序员,嵌入式

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!

小程序设计模式之状态模式实践-蓝牙配网_小程序 蓝牙状态模式,程序员,嵌入式

小程序设计模式之状态模式实践-蓝牙配网_小程序 蓝牙状态模式,程序员,嵌入式

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以+V:Vip1104z获取!!! (备注:嵌入式)

小程序设计模式之状态模式实践-蓝牙配网_小程序 蓝牙状态模式,程序员,嵌入式

最后

资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!

img-yq8vrNhI-1712389112572)]

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以+V:Vip1104z获取!!! (备注:嵌入式)

小程序设计模式之状态模式实践-蓝牙配网_小程序 蓝牙状态模式,程序员,嵌入式

最后

资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!

更多资料点击此处获qu!!文章来源地址https://www.toymoban.com/news/detail-851234.html

到了这里,关于小程序设计模式之状态模式实践-蓝牙配网_小程序 蓝牙状态模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包