1

ビュー(この場合はSwingパネル)を作成するときに、ボタン、ラベル、テキストフィールドなどの複数のコンポーネントを追加します。

次に、このビューのコントローラーがあります。ビューは、さまざまなモデルのコントローラーによって使用されます。モデルごとに異なるコンポーネントを有効/無効にする必要があります(すべてのコンポーネントが常にアクティブである必要はありません)。これまで私が行ったことは、たとえば名前の付いたビューにメソッドを作成することです。carMode()これは、ビューで必要な構成を行い、いくつかの条件に基づいてコントローラーでこのメソッドを呼び出します。

コントローラーコード:

if (something == car) { view.carMode() }

ただし、表示するために複数の異なる状態が必要になる場合があります。このアプローチをより良いものに置き換えることができるでしょうか。

4

2 に答える 2

1

enum要素が戦略パターンに影響を与える共通のインターフェースを実装するを使用することを検討してください。ここ に示すように、各要素にインターフェースを直接実装させるか、ここに示すように、各要素にインターフェースを実装するインスタンス変数を持たせることができます。ビューを操作するために、具象実装はいくつかのことのいずれかを実行できます。

  • コンポーネントを有効または無効にして、単一のパネルを構成します。

  • で特定のパネルを選択しCardLayoutます。

  • の特定のパネルに移動しJTabbedPaneます。

于 2013-03-08T12:50:42.807 に答える
0

これを行うためのより良い方法は、一般的なビューです。ビュー間で共有できるものを含むviewBaseクラスを作成します。次に、特殊なビューを作成します。モードごとに1つ。コントローラは、特定のビューを初期化できます。

if(sometin == car) { view = new CarView()}

2番目の利点は、特定のファイルに特定のビュー用のものがあることです。これはより柔軟で複雑ではありません

于 2013-03-08T09:55:25.883 に答える