gpt4 book ai didi

java - 避免使用instanceof模式

转载 作者:行者123 更新时间:2023-12-01 18:22:59 24 4
gpt4 key购买 nike

我想避免使用instanceof:

这是我的案例:

我的事件类的定义位于commons 模块中:

public class Event1 extends AbstractEvent{

}

public class Event2 extends AbstractEvent{

}

public class Event3 extends AbstractEvent{

}

在另一个名为 jms 的模块中,我有一个从队列接收事件消息的监听器:

public class MyMessageListener implements MessageListener {

@Override
public void onMessage(Message message) {
// CONVERT message to Event Object
if (event instanceof Event1) {
// Execute Processing 1
}

if (event instanceof Event2) {
// Execute Processing 2
}

if (event instanceof Event3) {
// Execute Processing 3
}

}

我想避免使用 instanceof ,而做到这一点的最佳方法是在 AbstractEvent 和每个事件中使用 execute 方法的访问者模式叶子类将实现它。

我的问题是,在公共(public)包中我无法访问负责处理的类。 这些类仅存在于 jms 模块中

是否有任何提示或提示可以执行此操作(高级访问者)或其他模式来执行此操作

最佳答案

将所有可能的行为放入 Map<Class, Runnable>并匹配事件类型和 Runnable类型。

关于java - 避免使用instanceof模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27148701/

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