通常、(GWT または Swing または Android で) ボタンにクリック ハンドラーを次の方法で記述します (方法 1 )。
class A {
public void myMethod() {
int count = 0 ;
Button myButton = new Button("x");
myButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
count = 1 ;
}
});
}
}
ただし、クリック ハンドラー用に別のクラスを記述して、次のように実装することもできます (方法 2 )。
class A implements ButtonClickInterface {
int count ;
public void myMethod() {
count = 0 ;
Button myButton = new Button("x");
myButton.addClickHandler(new MyClickHander(this));
}
@Override
public void buttonClicked() {
count = 1 ;
}
}
interface ButtonClickInterface {
public void buttonClicked() ;
}
class MyClickHandler implements ClickHandler {
ButtonClickInterface buttonClickInterface ;
public MyClickHandler(ButtonClickInterface buttonClickInterface) {
this.buttonClickInterface = buttonClickInterface ;
}
@Override
public void onClick(ClickEvent event) {
buttonClickInterface.buttonClicked() ;
}
}
ここではcount
、クラス変数として作成する必要があります。これには欠点がありますか?また、上記の実装方法には他の欠点がありますか? ClickHandler を実装した 2 つの方法は、複雑さ、結合、作成されたオブジェクトの数、コードの読みやすさの点でどのように対立するのでしょうか?