3

モデル クラスの上で実行する単純な状態パターンを実装しました。私のアプリケーションは 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);
    }

これも正しいアプローチですか?

4

1 に答える 1