6

最近、SwingでModel-View-Controllerを実装しようとして問題が発生しました。

サブパネルで構成されるGUIクラスがあり、それらのサブパネルは他のサブパネルで構成されています。これらのサブサブパネルの1つに。がありJButtonます。このActionListenerためJButtonに、コントローラーのメソッドを呼び出します。これを行うには、コントローラーをGUIの腸の奥深く、常駐するサブサブパネルに渡す必要がありJButtonます。次に、このサブサブパネルで、にをアタッチし、コントローラーで呼び出したいメソッドを呼び出して、に入力する必要がActionListenerありJButtonますactionPerformed()

きっと皆さんは問題を理解していると思います。コントローラをGUIの腸の奥深くまで通過させないようにする良い方法はありますか?

私の唯一の考えは、コントローラーをシングルトンにしてビューから切り離すことでしたが、シングルトンは通常悪だと聞いています。

この問題に関するアドバイスをいただければ幸いです。

4

1 に答える 1

4

ここに示されている間接的な関連付けによって示唆されているように、コントローラーへの参照を渡す代わりに、コントローラーにビューをリッスンさせますここに示されているを追加することは、これに理想的です。ビューがコントローラーを呼び出す必要がある場合、ビューは単にを呼び出します。PropertyChangeListenerfirePropertyChange()

より便利なアプローチは、ここreset()に示す方法など、特定の操作に対してコントローラーに個別のビューを提供することです。

于 2012-04-21T07:40:28.000 に答える