我想知道在没有太多接口的情况下在 Java 中实现某种 observable 的好方法是什么。
我认为使用预定义的功能接口会很好。在这个例子中,我使用 aString Consumer来表示一个接受一个字符串作为通知的监听器。
class Subject {
List<Consumer<String>> listeners = new ArrayList<>();
void addListener(Consumer<String> listener) { listeners.add(listener); }
void removeListener(Consumer<String> listener { listeners.remove(listener); }
...
}
class PrintListener {
public void print(String s) { System.out.println(s); }
}
Subject subject = new ...
PrintListener printListener = new ...
subject.add(printListener); // Works, I find it in the listener list
subject.remove(printListener); // Does NOT work. I still find it in the list
Run Code Online (Sandbox Code Playgroud)
我找到了解释:
Consumer<String> a = printListener::print; …Run Code Online (Sandbox Code Playgroud)