Stateパターンとは?すてーとぱたーん
Stateパターンとは、状態ごとの振舞いを一つのクラスへまとめ、状態が変わったら参照するオブジェクトを差し替えることで、同じ事象への応答を切り替える設計様式。状態と事象の二重の分岐がクラスの分割に置き換わるので、状態遷移図の構造がそのままコードの構造として現れる。
最終更新:2026-10-06
エンベデッドSPを最短で暗記・合格する →背景
GoF(Gang of Four)が整理したデザインパターンの一つ。組込みの制御は本質的に状態機械で、状態と事象の組合せの数だけ振舞いがある。これをswitchの入れ子で書くと、状態を1つ足すたびに全事象の分岐へ手を入れることになり、既存状態の回帰試験までやり直しになる。状態を単位に分けておけば、追加はクラスを1つ増やすだけで済み、変更の影響範囲が状態遷移図と一致する。
具体例
自動販売機を待機・投入済み・販売中・釣銭返却の4つに分け、それぞれが硬貨投入とボタン押下への応答を実装する。状態を1つ増やすときはクラスを1つ足すだけで、既存状態のコードには触らずに済む。C言語でも、状態ごとの関数ポインタ表として同じ構造が組める。
試験での引っ掛け
状態数が少ないうちは、列挙型とswitch、あるいは状態遷移表のほうが小さく速い。クラスと動的な参照差替えが増えるぶんROM/RAMと間接呼出しのコストを払うので、資源の限られた機器で必ず有利とは限らない。外から差し替えるStrategyとは、切替えを誰が決めるかで分かれる。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。