国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

給學(xué)校做網(wǎng)站合肥百度競價推廣代理公司

給學(xué)校做網(wǎng)站,合肥百度競價推廣代理公司,wordpress 仿微信主題,查詢網(wǎng)站怎么做文章目錄 狀態(tài)模式代碼實(shí)現(xiàn)代碼解釋小結(jié) 狀態(tài)模式 狀態(tài)模式(State Pattern)是一種行為設(shè)計模式,它允許對象在內(nèi)部狀態(tài)改變時改變它的行為。在嵌入式系統(tǒng)中,狀態(tài)模式尤其適用于那些根據(jù)外部事件或內(nèi)部條件頻繁改變狀態(tài)并且每種狀態(tài)…

文章目錄

    • 狀態(tài)模式
    • 代碼實(shí)現(xiàn)
    • 代碼解釋
    • 小結(jié)

狀態(tài)模式

狀態(tài)模式(State Pattern)是一種行為設(shè)計模式,它允許對象在內(nèi)部狀態(tài)改變時改變它的行為。在嵌入式系統(tǒng)中,狀態(tài)模式尤其適用于那些根據(jù)外部事件或內(nèi)部條件頻繁改變狀態(tài)并且每種狀態(tài)下行為不同的場景,例如設(shè)備的不同工作模式切換、任務(wù)調(diào)度、傳感器狀態(tài)管理、通信協(xié)議狀態(tài)機(jī)等。

代碼實(shí)現(xiàn)

#include <stdio.h>// 定義ACTION_PREPARE, ACTION_RUN, ACTION_END為合適的宏或整數(shù)值
#define ACTION_PREPARE 1
#define ACTION_RUN     2
#define ACTION_END     3// 首先聲明 WashingMachine 結(jié)構(gòu)體
typedef struct WashingMachineTag WashingMachine;// 定義狀態(tài)枚舉
typedef enum {STATE_STANDBY,STATE_PREPARING,STATE_RUNNING,STATE_FINISHED
} WashingMachineState;// 定義指向處理函數(shù)的指針類型
typedef void (*StateMachineAction)(WashingMachine *);// 洗衣機(jī)結(jié)構(gòu)體
struct WashingMachineTag  {WashingMachineState state;StateMachineAction on_prepare;StateMachineAction on_run;StateMachineAction on_end;
} ;// 待機(jī)狀態(tài)下準(zhǔn)備
static void standby_prepare(WashingMachine *machine) {printf("Machine is preparing for washing.\n");machine->state = STATE_PREPARING;
}// 準(zhǔn)備狀態(tài)下運(yùn)行
static void preparing_run(WashingMachine *machine) {printf("Machine has started running.\n");machine->state = STATE_RUNNING;
}// 運(yùn)行狀態(tài)下結(jié)束
static void running_end(WashingMachine *machine) {printf("Washing cycle completed.\n");machine->state = STATE_FINISHED;
}// 初始化洗衣機(jī)狀態(tài)及其對應(yīng)的處理函數(shù)
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;
}// 根據(jù)當(dāng)前狀態(tài)執(zhí)行相應(yīng)操作
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);// 根據(jù)實(shí)際需求調(diào)用操作函數(shù)operate_washing_machine(&machine, ACTION_PREPARE);operate_washing_machine(&machine, ACTION_RUN);operate_washing_machine(&machine, ACTION_END);return 0;
}

代碼解釋

代碼示例展示了如何使用狀態(tài)模式來模擬一個具有待機(jī)、準(zhǔn)備、運(yùn)行和結(jié)束四種狀態(tài)的洗衣機(jī)設(shè)備??偨Y(jié)要點(diǎn)如下:

定義了WashingMachineState枚舉類型,用于表示洗衣機(jī)的不同狀態(tài)(待機(jī)、準(zhǔn)備、運(yùn)行和結(jié)束)。

定義了一個指向函數(shù)的指針類型StateMachineAction,該類型表示在不同狀態(tài)下執(zhí)行動作的函數(shù)指針。

創(chuàng)建了WashingMachine結(jié)構(gòu)體,其中包含當(dāng)前狀態(tài)字段和三個函數(shù)指針成員,分別對應(yīng)在不同狀態(tài)下需要執(zhí)行的動作。

定義了三個靜態(tài)函數(shù),分別是standby_prepare、preparing_run和running_end,這三個函數(shù)分別對應(yīng)洗衣機(jī)從待機(jī)到準(zhǔn)備、從準(zhǔn)備到運(yùn)行、從運(yùn)行到結(jié)束狀態(tài)的轉(zhuǎn)換。

init_washing_machine函數(shù)用于初始化洗衣機(jī)對象,設(shè)置初始狀態(tài)和對應(yīng)狀態(tài)下的動作函數(shù)。

operate_washing_machine函數(shù)根據(jù)當(dāng)前洗衣機(jī)的狀態(tài)執(zhí)行相應(yīng)的動作。在本示例中,動作的選擇依賴于傳入的action參數(shù),但是實(shí)際上可能根據(jù)狀態(tài)機(jī)的規(guī)則自行定義。

定義了宏ACTION_PREPARE、ACTION_RUN和ACTION_END,雖然在給出的代碼片段中并未具體使用,但在實(shí)際應(yīng)用中,這些宏或類似的常量可用于指示要執(zhí)行的具體動作。

小結(jié)

本文通過狀態(tài)模式分離了洗衣機(jī)狀態(tài)的改變和對應(yīng)狀態(tài)下的行為,使得狀態(tài)之間的轉(zhuǎn)換變得清晰且易于維護(hù)。當(dāng)狀態(tài)變化時,只需調(diào)用相應(yīng)狀態(tài)下的動作函數(shù)即可完成狀態(tài)的遷移和對應(yīng)行為的執(zhí)行。

http://aloenet.com.cn/news/45164.html

相關(guān)文章:

  • 廈門百度網(wǎng)站建設(shè)優(yōu)化大師下載安裝app
  • wordpress實(shí)現(xiàn)pdf瀏覽seo網(wǎng)絡(luò)推廣機(jī)構(gòu)
  • 寶安中心做網(wǎng)站網(wǎng)站公司網(wǎng)站建設(shè)
  • 《原始傳奇》官方網(wǎng)站seo推廣工具
  • 鐵嶺做網(wǎng)站信息網(wǎng)店推廣的渠道有哪些
  • 長治市人民政府門戶網(wǎng)站簡單的網(wǎng)站制作
  • 網(wǎng)站源碼推薦谷歌sem
  • 汽車網(wǎng)站更新怎么做口碑營銷的例子
  • 鄭州展廳設(shè)計制作公司seo綜合查詢什么意思
  • 旅游類網(wǎng)站如何做推廣百度推廣后臺
  • 目錄網(wǎng)站模板php搭建一個簡單的網(wǎng)站
  • iis7建立網(wǎng)站可以看封禁網(wǎng)站的瀏覽器
  • 做網(wǎng)站公司排名電話國際新聞快報
  • 外貿(mào)網(wǎng)站建設(shè)模板百度云客服人工電話
  • 企業(yè)網(wǎng)站注冊官網(wǎng)百度搜索結(jié)果優(yōu)化
  • 網(wǎng)站如何做微信支付寶支付寶支付社交網(wǎng)絡(luò)的推廣方法
  • 深圳云網(wǎng)站建站公司搜索引擎的設(shè)計與實(shí)現(xiàn)
  • 搜狐一開始把網(wǎng)站當(dāng)做什么來做站長之家官網(wǎng)
  • 校園網(wǎng)站建設(shè)招標(biāo)公告企業(yè)網(wǎng)站推廣方案
  • 網(wǎng)站建設(shè)實(shí)訓(xùn)過程報告有什么好的推廣平臺
  • 合肥高端網(wǎng)站開發(fā)做一個企業(yè)網(wǎng)站大概需要多少錢
  • thinkphp 網(wǎng)站根目錄地址免費(fèi)網(wǎng)絡(luò)推廣網(wǎng)站
  • o2o網(wǎng)站建設(shè)流程理發(fā)培訓(xùn)專業(yè)學(xué)校
  • 網(wǎng)站建設(shè)價值長沙seo優(yōu)化推廣
  • 沒有備案的網(wǎng)站 推廣牛排seo
  • 什么網(wǎng)站可以免費(fèi)做視頻的軟件有哪些免費(fèi)學(xué)生網(wǎng)頁制作成品代碼
  • 網(wǎng)站建設(shè)的目的分析國內(nèi)新聞最新消息今天簡短
  • 自己做網(wǎng)站賣閥門網(wǎng)絡(luò)營銷方案的制定
  • 找人建個網(wǎng)站多少錢semantic ui
  • 如何減少網(wǎng)站建設(shè)中的錯誤廣東東莞疫情最新情況