package pl.net.bluesoft.util.eventbus.listenables; import pl.net.bluesoft.util.eventbus.EventListener; /** * @author: amichalak@bluesoft.net.pl */ public abstract class ListenableStrategy<L extends EventListener> { public abstract ListenerReference<L> create(L listener); public static class WeakListenableStrategy<L extends EventListener> extends ListenableStrategy<L> { @Override public ListenerReference<L> create(L listener) { return ListenerReference.weakReference(listener); } } public static class StrongListenableStrategy<L extends EventListener> extends ListenableStrategy<L> { @Override public ListenerReference<L> create(L listener) { return ListenerReference.strongReference(listener); } } public static <L extends EventListener> ListenableStrategy<L> weakListenableStrategy() { return new WeakListenableStrategy<L>(); } public static <L extends EventListener> ListenableStrategy<L> strongListenableStrategy() { return new StrongListenableStrategy<L>(); } }