我想每个人都知道侦听器接口模式。我有一堂课,里面有一些用户可以添加或删除的最喜欢的项目。
在这堂课中,我有:
public static OnFavsChangedListener onFavsChangedListener;
public interface OnFavsChangedListener {
abstract void onFavsChanged();
}
public static void setOnFavsChangedListener(
OnFavsChangedListener listener) {
onFavsChangedListener = listener;
}
public void addToFavorites () {
if (onFavsChangedListener != null) {
onFavsChangedListener.onFavsChanged()
}
}
当我只需要使用其中一个侦听器时,这非常有用,当我使用setOnFavsChangedListener
from different时Activities
,它们将覆盖最后一个。
我的想法是使用一个ArrayList
监听器并在我的 Favs 更改时调用它们,但是很难不让监听器ArrayList
变得太大(Activities
可能会在每次方向更改时添加一个监听器 / onCreate
)。我可以使用一个HashMap
ID 和侦听器,让每个Activit
y 删除它的侦听器onDestroy
,但这似乎很笨拙。
Activities
TL;DR:当我的收藏发生变化时,通知几个人的优雅方式是什么?