さまざまなデザインパターンをマスターするための継続的な探求の中で、私は「状態」デザインパターンに遭遇しました。
まず、このパターンをどこで使おうとしているのかを説明しましょう。状態を適用したいフォームがあります。私のプログラムには、Configuration、Processing、ProcessingCompleteの3つの状態があります。フォームの状態が変わると、フォームのさまざまなコンポーネントが有効/無効、表示/非表示などになります。
Stateパターンを理解すると、これらすべての変更(コンポーネントの表示/非表示、有効化/無効化など)は、フォームのインスタンスを含む別のクラス内で発生するはずです。さまざまなStateクラスがフォームのクラスから分離されている場合、Stateクラスはフォームのコンポーネントにアクセスできません。これにより、次の2つのオプションのいずれかが可能になると思います。
- フォームのコンポーネントを公開する
- Stateクラスをフォームの内部クラスにします
オプション(1)は悪い形だと思いますが、オプション(2)はどういうわけかStateパターンの精神に違反していると思います。私が持っていたもう1つの考えは、オプション(2)を使用することでしたが、部分的なクラス実装を使用しましたが、それでもStateパターンの精神に違反していると感じています。
どちらかの選択に対する私の気持ちは不当ですか、それとも私が考えもしなかった別の選択肢がありますか?