言葉を理解します
また良いモデル他の場合には、各状態は他またはスイッチあれば大きな空間が生成されずに、対応するハンドラを持っています。
主アカウントに既に状態の前に書かれた修正することなく、コードの膨張状態における各増加を取る場合。
そして、戦略パターンの違いは、政策戦略に関連する様々なモード間の様々な状態状態モードとの間の接続は、非常に強いがされていないということです。
例えば
状態プロトコルの相互作用モデルは、モードで最も頻繁に使用されています。例えば、異なるプロトコルでは、基本的な状態を一時停止、維持するためにそこに開始します。だから、どのように我々は検討する必要があるものの状態を変更するための柔軟性があります。状態があることを今仮定
typedef struct _State
{
void (*process)();
struct _State* (*change_state)();
}State;
ここでの説明は、2つの変数、それぞれ処理機能とchange_state機能を定義します。関数は、通常のデータ操作であるプロセスへ、
void normal_process()
{
printf("normal process!\n");
}
自然change_state機能はどのような次の状態はい決定することです。
struct _State* change_state()
{
State* pNextState = NULL;
pNextState = (struct _State*)malloc(sizeof(struct _State));
assert(NULL != pNextState);
pNextState ->process = next_process;
pNextState ->change_state = next_change_state;
return pNextState;
}
だから、文脈で、状態変数があるはず、状態変換はまた、機能を持っている必要があります。
typedef struct _Context
{
State* pState;
void (*change)(struct _Context* pContext);
}Context;
void context_change(struct _Context* pContext)
{
State* pPre;
assert(NULL != pContext);
pPre = pContext->pState;
pContext->pState = pPre->changeState();
free(pPre);
return;
}
概要
状態モデルは、一般的には非常によく理解していない。どんなに難解なタイミング関係、単にないオブジェクトの状態の行動と対応する状態を分離し、もはや単純な場合は...他にまたはスイッチ...ケース分岐構造、むしろクラスの各状態に相当する、クラス状態の管理を集中、マルチステート、保守及び管理手続きを簡略化する場合には、そう簡単にするプログラム構造が、しかし容易に拡張することができます。