GWTのHas****Handlers
インターフェイスの意味を理解できません。クラスがHasClickHandlers
(addClickHandler
)とClickHandler
(onClick
)のインターフェイスを実装する場合の違いは何でしょうか。ハンドラがgwtの意味するもの
ありがとう
GWTのHas****Handlers
インターフェイスの意味を理解できません。クラスがHasClickHandlers
(addClickHandler
)とClickHandler
(onClick
)のインターフェイスを実装する場合の違いは何でしょうか。ハンドラがgwtの意味するもの
ありがとう
HasClickHandlers
- クリックできるもの。ボタン
ClickHandler
- クリック
HasClickHandlers
オブジェクトに処理するいくつかのコードは、ユーザーがそれをクリックしたときに反応することができ、ボタンのようなウィジェット、です。しかし、ボタン自体は、ユーザーがクリックしたときに何が起こるべきか分かりません。開発者はClickHandler
オブジェクトを作成できます。これは、ユーザーがそのボタンをクリックしたときに何が起こるべきかを実装するコードです。ボタンにはClickHandler
と指定してユーザーのクリックに反応させることができます。つまり、ボタンにはクリックハンドラ(HasClickHandlers
)を保持することができます。プレゼンターからビューを切り離す
HasClickHandlers getSaveButton();
の代わりに、単に
Button getSaveButton();
、Googleの支持者:GWTはアプリケーションのようなメソッドのシグネチャとビュー・インタフェースを定義する必要があると言うんなぜ
一つが求めることができます。プレゼンターは通常、ボタンのすべての機能をほとんど気にしません。通常、ボタンはクリックハンドラを使用して使用できるものです。 HasClickHandler
のようなインタフェースは、メソッドが非常に少なく、模擬するのが非常に簡単です。ただし、実際のボタンを使用すると、テスト用のボタンを作成するためにUIフレームワーク全体の一部または一部を初期化し、前提条件のコンテキストクラスをインスタンス化する必要が生じることがあります。
インターフェイスがButton
の代わりにHasClickHandler
を返すようにすると、プレゼンター用のユニットテストコードは、HasClickHandler
のようなインターフェイスを単純にモックすることによってUIフレームワークの複雑さから完全に切り離すことができます。これは、(UIフレームワークの初期化/相互作用のオーバーヘッドがないため)非常に高速なユニットテストである、より簡単なテスト用足場とを意味します。
http://googletesting.blogspot.com/2009/08/tott-testing-gwt-without-gwttest.html
編集
OPは尋ねる:
をOK、例えばABCクラスがHasclickhandlersとClickhandlerを実装し、次にonClickとaddClickHandler(HandlerRegistrationを返す)を実装すると、1)clickイベントからonClickメソッドを操作し、2)他のクラス(ClickHandlerとイベントを登録するためにABCクラスのaddClickHandlerを使用しました)クリックが発生したばかりですか?右?
ABC
のようなクラスはHasClickHandlers
を実装しません。ボタンのようなGWTウィジェットだけがHasClickHandlers
を実装します。 Googleはボタンのようなウィジェットに変数参照を宣言する代替手段としてHasClickHandlers
インターフェースを提供するだけです。これらのウィジェットは、登録されたClickHandler
にボタンクリックについて通知します。
クラスABC
は、ClickHandler
を実装してもよく、ClickHandler
から派生する内部(可能な匿名)クラスを含んでもよい。典型的な使用法は次のようになります。
public class ABC {
...
getSaveButton().addClickHandler(
new ClickHandler() {
public void onClick(ClickEvent event) {
saveToDatabase();
}
}
}
...
HasClickHandlersは、クリックイベントを生成するオブジェクト用です。 ClickHandlerは、イベントを処理するオブジェクト用です。
たとえば、ボタンはクリックイベントを生成します。 Clickイベントを処理する場合は、そのようなコードを含むClickHandlerを作成します。このClickHandlerをButtonオブジェクトに登録すると、クリックが発生したときにButtonはそれを誰に伝えるかを知ることができます。 HasClickHandlersインターフェイスは、ClickHandlersを登録するためのインターフェイスであるButton(FocusWidget親クラスを介して)によって実装されます。このインタフェースは、単にClickHandlerの登録を標準化します。
ok、 ABCクラスがHasclickhandlersとClickhandlerを実装し、次にonClickとaddClickHandler(HandlerRegistrationを返す)を実装すると、1)clickイベントからonClickメソッドを操作し、2)他のクラス(ClickHandlerとイベントを登録するためにABCクラスのaddClickHandlerを使用しました)クリックが発生したばかりですか?右? – Deam
@ user330281 - 編集を参照 –