gpt4 book ai didi

java - 循环访问共享相同父类(super class)的不同对象的列表并获取一种特定类型

转载 作者:行者123 更新时间:2023-11-30 02:14:16 26 4
gpt4 key购买 nike

我正在使用 Java 练习观察者设计模式。
我有两种类型的客户。
一个人对价格感兴趣,另一个人对可用性感兴趣。
我正在尝试重构以下代码:

public void setAvailable(boolean available) {

this.available = available;
if (this.available == true)
for (Iobserver o : allObservers) {
if (o instanceof CustomerAvailabilityObserver)
notify(o);
}
}

有人告诉我,每当你使用 instanceof 时,我的代码中都会有一种可以修复的坏味道。
关于如何重写 for 循环有什么想法吗?顺便说一句,观察者存储在 ArrayList 中。

最佳答案

您可以在客户类中编写确定他们兴趣的函数:

boolean notifyOnAvailabilityChange();
boolean notifyOnPriceChange();

所以你可以将循环写成类似的

allObservers.filter(o -> o.notifyOnAvailabilityChange()).forEach(this::notify);

关于java - 循环访问共享相同父类(super class)的不同对象的列表并获取一种特定类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49082038/

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