= Observer Pattern = publish <=> subscribe {{tag>Architecture Modeling Design_Pattern Behavioral}} == Implementation == public final class Observer { public interface Subscriber { void onSubscribe(T data); } private final HashMap> manager = new HashMap<>(); public final void subscribe(Subscriber subscriber) { if(subscriber == null) return; manager.put(subscriber.getClass().getName(), subscriber); } public final void publish(T data) { if(data == null) return; for(Subscriber listener : manager.values()) { listener.onSubscribe(data); } } }