GWT-EXT - イベント後に特定の ContentPanel にウィジェットを追加する最善の方法は何ですか?

StackOverflow https://stackoverflow.com/questions/111854

  •  02-07-2019
  •  | 
  •  

質問

最初の投稿は私を傷つけないでください:)

私はを使用しています BorderLayout 通常の北、西、中央、南のパネルを使用します。で 西 ContentPanel, 、私は持っています Tree. 。イベントの場合(OnClick)occurs 特定のダイアログ ボックスを 中心 ContentPanel.

これを行うための最善の方法は何ですか?現在、私はという関数を使用しています returnPanel() 中心を返す ContentPanel. 。イベントハンドラーでこの関数を呼び出します (MainWindow.returnPanel().add(myDialog)).

役に立ちましたか?

解決

これを行う方法は直感的で機能しますが、アプリケーションのさまざまな部分が強く結合されているため、アプリケーションが大きくなると地獄を引き起こすことになります。この問題の解決策は、 MVC 設計パターン そしてその オブザーバーのデザインパターン.

理想的には、MVC パターンを使用すると、どのウィジェットも他のウィジェットを「認識」しないようにする必要があります。すべてのウィジェットを認識するクラスはコントローラーだけです。1 つのウィジェットが別のウィジェットにメッセージや信号を送信する必要がある場合は、そのウィジェットがコントローラー クラスに通知され、適切な方法でメッセージが適切なウィジェットに中継されます。このようにして、2 つのウィジェットは分離され、一方を壊すことなく他方を変更できます。enum を使用して、コントローラーが応答する必要があるすべての可能なアクションを列挙することもできます。

イベントの発生時にウィジェットがコントローラーのみを呼び出す必要がある場合は、適切に名前を付けた (静的) メソッドを呼び出すだけで完了します。ただし、他の複数のクラスにイベントを通知する必要がある場合は、クラスを変更せずに他の複数のクラスに通知できる Observer パターンを使用することをお勧めします。これは、eventHandler で NoticePObservers() を呼び出すだけです。リスナーが何人いるか、リスナーがどのようなタイプであるかは関係ありません。こうすることで、クラスをリスナーから切り離すこともできます。コントローラーのみがリッスンする場合でも、クラス内の他のコードから「コールバック」コードを明確に分離するため、パターンを使用することをお勧めします。

ところで、これは GWT や特に Java とは何の関係もありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top