リスナー インターフェイスのパターンは誰もが知っていると思います。ユーザーが追加または削除できるお気に入りのアイテムを含むクラスがあります。
このクラスには次のものがあります。
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()
}
}
これは、これらのリスナーの 1 つだけを使用する必要がある場合にうまく機能します。setOnFavsChangedListener
別のリスナーを使用Activities
すると、最後のリスナーが上書きされます。
私のアイデアはArrayList
、リスナーの を使用して、お気に入りが変更されたときにそれらすべてを呼び出すことでしたが、ArrayList
大きくなりすぎないようにするのは難しいです (Activities
向きが変わるたびにリスナーを追加する可能性があります / onCreate
)。HashMap
ID とリスナーのa を使用して、すべてActivit
の y でリスナーを削除することもできますonDestroy
が、それは不器用に思えます。
TL;DR: お気に入りがActivities
変更されたときに複数の人に通知するエレガントな方法は何ですか?