package pl.edu.agh.logic; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class AbstractProvider<L> { protected interface ListenerTask<L> { public void execute(L listener); } protected List<L> listeners = Collections.synchronizedList(new ArrayList<L>()); public void registerListener(L listener) { listeners.add(listener); } public void unregisterListener(L listener) { listeners.remove(listener); } protected void unregisterAll() { listeners.clear(); } protected void forAllListeners(ListenerTask<L> task) { for (L listener : listeners) { task.execute(listener); } } }