私は様々なデザインパターンを習得するために、私は "State"デザインパターンにぶつかりました。内部および/または部分クラスは州のデザインパターンの原則を逸脱していますか?
まず、このパターンをどこで使用しようとしているかを説明します。私は状態を適用したいFormを持っています。私のプログラムには、構成、処理、ProcessingCompleteの3つの状態があります。 Formの状態が変わると、Formのさまざまなコンポーネントが有効/無効、可視/不可視などになります。
状態パターンを理解して、これらの変更(コンポーネントを表示/非表示、有効/無効など)フォームのインスタンスを含む別のクラス内で発生する必要があります。さまざまなStateクラスがFormのクラスとは別の場合、StateクラスはFormのコンポーネントにアクセスできません。私は、この2つのオプションのいずれかで私を残していることを感じる:
- は、私は、そのオプションを感じるフォームの国家クラスのインナークラス
を行い、公共
いずれかの選択についての私の気持ちは不当ですか、私が考えていない別の選択肢がありますか?
私は本当にこのアイデアが好きです。クラスをかなり不変に保つことに慣れているので、私は私には起こりませんでした。これはおそらくかなり複雑なコンストラクタ(この場合は複雑なパラメータ)を実装する必要があることを意味します。 – Anthony
さらに考えてみましょう:「オプション2は、与えられたものだけを行動できるようにあなたの国を設計するときには本当に不必要になります」。オプション2では、StateクラスにFormのインスタンスを指定する必要があります。利点は、Stateクラスがネストされているため、StateがFormのインスタンスのプライベートメンバーにアクセスできることです。 – Anthony
@Shynthriir:他のクラスのプライベートメンバーにアクセスするクラスは、実際にはメリットはありません。密接に結合したコードです。入れ子にされていても、彼らは自分が見えるものにアクセスする必要があります。 –