モデル クラスの上で実行する単純な状態パターンを実装しました。私のアプリケーションは C# WPF で書かれています。
まず第一に、状態パターン ロジックをどこに置く必要があるのかよくわかりません。コントローラーまたはサービスクラスに配置する必要がありますか?
実際の移行を行う前に、いくつかのことを確認したいとします。現在、状態パターン クラスから直接呼び出すことができる仕様を作成しました。
しかし、これは正しいアプローチですか?
interface ISpecification<T>
{
bool IsSatisfiedBy(T sut);
}
class DetermineDockingSate:ISpecification<Vehicle>
{
public bool IsSatisfiedBy(Vehicle sut)
{
throw new NotImplementedException();
}
}
これは、状態パターン内の検証/チェックポイント用です。しかし、遷移を行う前に状態パターン内で実行する必要があるアクションについてはどうでしょうか。
これらのアクションをある種のサービス クラスに実装し、これらのサービス クラスを状態パターンから直接呼び出します。
public override void Dock()
{
Console.WriteLine("Dock Machine and going to the Vehicle status.");
DockingStateEngineService myService = new DockingStateEngineService();
Func<string,bool> messageTarget;
messageTarget = myService.DetermineDockingSate;
bool ok = messageTarget("NOT");
this.Engine.setCurrentState(Engine.Vehicle);
}
これも正しいアプローチですか?