私はいくつかのコードをリファクタリングしたいです。フォームから状態パターンへのリファクタリング?
基本的に私はリファクタリングするコードは(のSystem.Windows.Formsを使用して;)フォームです
それが今セットアップした方法、あなたはそれは、ウィンドウごとに異なるレイアウトを示し、選択したラジオボタンに応じて:別のラベル、ボタンなど常に大きな違いはありませんが、異なる。これは、場所のいたるところにある多くの条件文のジャンクです。代わりにStateパターンでそれをリファクタリングしたかったのです。 3つの主な状態があります。
これを行う最善の方法はわかりません。現在、IStateインターフェイスには、一意の状態に固有の動作を行うDoAction()メソッドと、現在のStateに基づいてフォームを再描画するDrawForm()メソッドがあります。ただし、DrawForm()を実行するには、 StateクラスはFormのメンバ変数にアクセスできる必要があります。それがループのために私を投げたものです。私は彼らを暴露したくはありませんでした。
これを行うより良い方法はありますか?
私がState Patternについて知っているところでは、DIDはそれらの具体的な状態クラスに "コンテキスト"(あなたの場合のフォーム)へのアクセス権を必要とします。これらのメンバ変数にアクセスすることは避けられないと思います。 – xandy
ありがとう、私はいくつかの愛をあなたのコメントを与えなければならなかったので、upvote、笑に1つの答えがないので。 –