gpt4 book ai didi

java - 如何避免在可观察的通知中使用 if/else?

转载 作者:行者123 更新时间:2023-12-02 01:22:45 25 4
gpt4 key购买 nike

我有一个可观察的(来自观察者/可观察模式),它注册了监听器列表。
当事件发生时,通知代码会执行以下操作:

if(event == TYPE_A){  
for(Listener l:listeners){
l.fireEventA();
}
else if(event == TYPE_B){
for(Listener l:listeners){
l.fireEventB();
}
if(event == TYPE_C){
for(Listener l:listeners){
l.fireEventC();
}

我想知道这是我能做的最好的事情还是我应该避免通知中的 if-else ?我该如何改进?

最佳答案

如何重构您的解决方案,以便将是否触发的责任推给监听器:

类监听器{ 私有(private)事件类型事件类型;

   public Listener(EventType eventType) {
this.eventType = eventType;
}

public void fireEvent(EventType eventType) {
if(this.eventType == eventType) {
...do stuff
}
}

那么客户端代码如下所示:

..setup...
listeners.add(new Listener(TYPE_A);
listeners.add(new Listener(TYPE_B);
..and so on

然后当您需要触发事件时:

for(Listener l:listeners){  
l.fireEvent(event);
}

这是您的选择吗?

关于java - 如何避免在可观察的通知中使用 if/else?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15112816/

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