HasClickHandlers
- algo que se puede hacer clic, p. Ej. un botón
ClickHandler
- un código que maneja en un clic
Un objeto HasClickHandlers
es un widget, como un botón, que puede reaccionar cuando el usuario hace clic en él. Pero un botón por sí solo no sabe qué debería suceder cuando un usuario hace clic en él. Un desarrollador puede crear un objeto ClickHandler
, que es un código que implementa lo que debería suceder cuando el usuario hace clic en ese botón. Se puede dar un ClickHandler
a un botón para reaccionar al clic del usuario, es decir, el botón puede tener/mantener un controlador de clic - HasClickHandlers
.
Uno puede preguntarse por qué decir GWT aplicaciones deben definir las interfaces de vista con firmas de métodos como:
HasClickHandlers getSaveButton();
en lugar de simplemente
Button getSaveButton();
defensores de Google desacoplamiento de la vista desde presentador. Al presentador generalmente le importa muy poco la funcionalidad de un botón; por lo general, solo le importa que el botón sea algo que pueda tomar un control de clic y usarlo. Una interfaz como HasClickHandler
tiene muy pocos métodos y es muy fácil de simular. Sin embargo, usar un botón real a veces requerirá inicializar parte o la totalidad del marco de la UI y crear instancias de clases de contexto de requisitos previos para crear un botón para probar.
Al tener el retorno interfaz HasClickHandler
lugar Button
, el código de prueba de unidad para el presentador puede desacoplar por completo de la complejidad del marco de interfaz de usuario simplemente burlarse de las interfaces como HasClickHandler
. Esto significa andamios de prueba más simples y pruebas de unidades muy rápidas (ya que no tiene la sobrecarga de inicializar/interactuar con un marco de interfaz de usuario).
http://googletesting.blogspot.com/2009/08/tott-testing-gwt-without-gwttest.html
Editar
OP pregunta:
bien, por ejemplo, si la clase ABC implementa Hasclickhandlers y Clickhandler y luego onClick y addClickHandler (que devuelve HandlerRegistration), significa que 1) actuará al hacer clic en el evento mediante el método onClick y 2) informará a cualquier otra clase (quién está implementando ClickHandler y se usó addClickHandler de la clase ABC para registrar el evento) ¿se ha producido el clic? ¿derecho?
Sus clases como ABC
no implementarán HasClickHandlers
. Solo los widgets GWT como los botones implementan HasClickHandlers
. Google simplemente proporciona la interfaz HasClickHandlers
como una forma alternativa de declarar referencias de variables a algunos widgets como botones. Estos widgets notificarán ClickHandler
registrado sobre un clic de botón.
Su clase ABC
puede implementar ClickHandler
o puede contener una clase interna (posible anónima) que se deriva de ClickHandler
. Un uso típico se ve así:
public class ABC {
...
getSaveButton().addClickHandler(
new ClickHandler() {
public void onClick(ClickEvent event) {
saveToDatabase();
}
}
}
...
vale, p. si la clase ABC implementa Hasclickhandlers y Clickhandler y luego onClick y addClickHandler (que devuelve HandlerRegistration), significa que 1) actuará al hacer clic en el evento mediante el método onClick y 2) informará a cualquier otra clase (quién está implementando ClickHandler y se usó addClickHandler de la clase ABC para registrar el evento) ¿se ha producido el clic? ¿derecho? – Deam
@ user330281 - ver la edición –