当前位置: 首页 > news >正文

给学校做网站网页制作工具

给学校做网站,网页制作工具,电商网站建设那家好,xx网站开发建设方案文章目录 状态模式代码实现代码解释小结 状态模式 状态模式(State Pattern)是一种行为设计模式,它允许对象在内部状态改变时改变它的行为。在嵌入式系统中,状态模式尤其适用于那些根据外部事件或内部条件频繁改变状态并且每种状态…

文章目录

    • 状态模式
    • 代码实现
    • 代码解释
    • 小结

状态模式

状态模式(State Pattern)是一种行为设计模式,它允许对象在内部状态改变时改变它的行为。在嵌入式系统中,状态模式尤其适用于那些根据外部事件或内部条件频繁改变状态并且每种状态下行为不同的场景,例如设备的不同工作模式切换、任务调度、传感器状态管理、通信协议状态机等。

代码实现

#include <stdio.h>// 定义ACTION_PREPARE, ACTION_RUN, ACTION_END为合适的宏或整数值
#define ACTION_PREPARE 1
#define ACTION_RUN     2
#define ACTION_END     3// 首先声明 WashingMachine 结构体
typedef struct WashingMachineTag WashingMachine;// 定义状态枚举
typedef enum {STATE_STANDBY,STATE_PREPARING,STATE_RUNNING,STATE_FINISHED
} WashingMachineState;// 定义指向处理函数的指针类型
typedef void (*StateMachineAction)(WashingMachine *);// 洗衣机结构体
struct WashingMachineTag  {WashingMachineState state;StateMachineAction on_prepare;StateMachineAction on_run;StateMachineAction on_end;
} ;// 待机状态下准备
static void standby_prepare(WashingMachine *machine) {printf("Machine is preparing for washing.\n");machine->state = STATE_PREPARING;
}// 准备状态下运行
static void preparing_run(WashingMachine *machine) {printf("Machine has started running.\n");machine->state = STATE_RUNNING;
}// 运行状态下结束
static void running_end(WashingMachine *machine) {printf("Washing cycle completed.\n");machine->state = STATE_FINISHED;
}// 初始化洗衣机状态及其对应的处理函数
void init_washing_machine(WashingMachine *machine) {machine->state = STATE_STANDBY;machine->on_prepare = standby_prepare;machine->on_run = preparing_run;machine->on_end = running_end;
}// 根据当前状态执行相应操作
void operate_washing_machine(WashingMachine *machine, int action) {switch (machine->state) {case STATE_STANDBY:if (action == ACTION_PREPARE) {machine->on_prepare(machine);} else {printf("Invalid action in STANDBY state.\n");}break;case STATE_PREPARING:if (action == ACTION_RUN) {machine->on_run(machine);} else {printf("Invalid action in PREPARING state.\n");}break;case STATE_RUNNING:if (action == ACTION_END) {machine->on_end(machine);} else {printf("Invalid action in RUNNING state.\n");}break;case STATE_FINISHED:printf("Machine is already in FINISHED state.\n");break;default:printf("Unknown machine state.\n");break;}
}int main() {WashingMachine machine;init_washing_machine(&machine);// 根据实际需求调用操作函数operate_washing_machine(&machine, ACTION_PREPARE);operate_washing_machine(&machine, ACTION_RUN);operate_washing_machine(&machine, ACTION_END);return 0;
}

代码解释

代码示例展示了如何使用状态模式来模拟一个具有待机、准备、运行和结束四种状态的洗衣机设备。总结要点如下:

定义了WashingMachineState枚举类型,用于表示洗衣机的不同状态(待机、准备、运行和结束)。

定义了一个指向函数的指针类型StateMachineAction,该类型表示在不同状态下执行动作的函数指针。

创建了WashingMachine结构体,其中包含当前状态字段和三个函数指针成员,分别对应在不同状态下需要执行的动作。

定义了三个静态函数,分别是standby_prepare、preparing_run和running_end,这三个函数分别对应洗衣机从待机到准备、从准备到运行、从运行到结束状态的转换。

init_washing_machine函数用于初始化洗衣机对象,设置初始状态和对应状态下的动作函数。

operate_washing_machine函数根据当前洗衣机的状态执行相应的动作。在本示例中,动作的选择依赖于传入的action参数,但是实际上可能根据状态机的规则自行定义。

定义了宏ACTION_PREPARE、ACTION_RUN和ACTION_END,虽然在给出的代码片段中并未具体使用,但在实际应用中,这些宏或类似的常量可用于指示要执行的具体动作。

小结

本文通过状态模式分离了洗衣机状态的改变和对应状态下的行为,使得状态之间的转换变得清晰且易于维护。当状态变化时,只需调用相应状态下的动作函数即可完成状态的迁移和对应行为的执行。

http://www.tj-hxxt.cn/news/2701.html

相关文章:

  • 怎么给网站动态做伪静态网站seo优化排名
  • 做网站必须要切图吗湖南关键词优化快速
  • 网站建设资金的请示郑州网络营销
  • 做数学题挣钱的网站app投放推广
  • 个人 网站备案网站seo方案案例
  • 上海网站建设 永灿百度广告推广
  • 企业站seo点击软件网络营销平台有哪些?
  • 泉州网站制作企业如何做网络推广
  • 全球外贸网来宾网站seo
  • 免费建设企业网站app拉新推广平台代理
  • 北京专业网站制作百度广告电话号码
  • 网站空间独立ip游戏推广话术技巧
  • 福州网站设计十年乐云seo免费自助建站模板
  • 网站怎么做qq的授权登陆黄页引流推广网站
  • 织梦dede做网站的优点手游推广加盟
  • 浙江信息港证件查询网站搜索优化找哪家
  • 基于互联网 模式下的安全网站建设seo关键词排名优化手机
  • 泰安本地网站津seo快速排名
  • b2c旅游网站建设2021百度最新收录方法
  • 如何做房地产网站seo自然排名关键词来源的优缺点
  • 设计上海地址北京网站建设优化
  • 裤袜 wordpress天津网站seo设计
  • admin5官方地方网站运营全套课程下载营销网站类型
  • html网站的规划与建设6seo是什么意思seo是什么职位
  • 完善校园网站建设草根站长工具
  • 网页编程语言有哪几种潍坊百度快速排名优化
  • 长沙网站制作app开发公司关键词排名点击软件
  • html自学东莞seo建站哪家好
  • 高考评卷工作全面展开网站优化系统
  • 成都房产网最新楼盘北京关键词优化平台