我们通常通过以下方式(方式 1 )在按钮(在 GWT 或 Swing 或 Android 中)上编写点击处理程序。
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 的两种方式在复杂性、耦合性、创建的对象数量和代码可读性方面如何相互对抗?