背景
在项目编写的时候产生这样的疑问:Android difference between callback and listener
callBack和listener的区别到底是什么?
思考
根据人家的回答:
本质上首先需要认识到:两者没有太多区分,无非就是等待数据或者某些动作的到来以触发我们设置好的动作(操作)。
事实上呢~命名的区分有助于开发者理解当前的代码逻辑。
如果大家伙对上述的逻辑还是比较模糊那么可以参考我如下的代码:
public abstract void sendMessage(ZIMMessage message, String toConversationID, ZIMConversationType conversationType, ZIMMessageSendConfig config, ZIMMessageSentCallback callback);
public interface ZIMMessageSentCallback {
void onMessageAttached(ZIMMessage message);
void onMessageSent(ZIMMessage message, ZIMError errorInfo);
}
这个是抽象方法,其中有一个回调ZIMMessageSentCallback
。可以看出来,这个方法是主动去执行某些操作的过程而不是被动的。
很容易理解:人发送信息。而不是 “人被发送信息”,这个逻辑还是比较清晰的。
- 下面展开关于Listener的表述:
public abstract class IMEventListener {
public void onReceiveRoomMessage(ZIM zim, ArrayList<ZIMMessage> messageList, String fromRoomID) {
}
}
上述的onReceiveRoomMessage
方法是被动接受信息,采用Listener的命名方式开发者就直接明了,原来是要监听远端的操作哦~
总结
什么时候应该命名callback,什么时候应该使用Listener命名?
个人的看法是:方法偏向主动加上callBack ,反之就加上Listener