gpt4 book ai didi

java - 使用监听器的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-02 04:42:46 25 4
gpt4 key购买 nike

我的老板说我把 Listeners 写错了,并且无法提出任何好的论据来解释原因。我通常的做法是这样的:

View.OnClickListener onClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
if (R.id.basketCancel == view.getId()) {
Observer.getInstance().send(MessageType.SCAN_STATUS, new ScanEvent(true));
dismiss();
return;
}
}
};

 cancel.setOnClickListener(onClickListener );

他要求我这样写:

private class ClickButtonHandler implements View.OnClickListener {
@Override
public void onClick(View v) {
if (R.id.basketCancel == v.getId()) {
Observer.getInstance().send(MessageType.SCAN_STATUS, new ScanEvent(true));
dismiss();
return;
}
}
}

private ClickButtonHandler clickButtonHandler = new ClickButtonHandler();
...
cancel.setOnClickListener(clickButtonHandler);

我相信这会让事情变得复杂。他认为这样我就可以在任何地方实现多个监听器来使用此类的一个对象。但我通常只使用 View.OnClickListener而且结构本身并不像我。我该如何向他解释并证明我做得更好?或者你认为他是对的?我看不懂?

最佳答案

这个问题很难正确回答,因为在我看来这是基于观点的。因此,我将重点讨论这两种方法的优缺点:

如果您需要同一个实现的多个实例,命名类就有意义。您可以通过搜索重复的监听器代码轻松识别这些点。通常仅当您的监听器类保存任何状态(即具有一个或多个字段)时才需要多个实例。 (如果是无状态的(没有字段),那么只有一个实例就足够了)。

但是,如果您需要某个监听器实现一次,或者您可以重用某个监听器实现的同一实例,那么您的方法(匿名内部类)似乎更适合我,因为它简化了您的代码。

关于java - 使用监听器的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29987845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com