Importjava.util.ArrayList;Importjava.util.List;/*** Viewer Mode *@authorTmac-j * Reaching to describe the observer pattern in the right way * divided into pull mode and push mode, here is not detailed*/ Public classObserverpattern {Interfaceiobserved{voidAddobserver (IObserver observer); voidRemoveobserver (IObserver observer); voidnotifyobservers (); } Public classObservedImplementsiobserved{PrivateList<iobserver> observers =NewArraylist<iobserver>(); @Override Public voidAddobserver (IObserver observer) {OBSERVERS.ADD (Observer); } @Override Public voidRemoveobserver (IObserver observer) {OBSERVERS.REMOVE (Observer); } @Override Public voidnotifyobservers () { for(IObserver observer:observers) {observer.update (); } } } Interfaceiobserver{voidupdate (); } Public classObserverImplementsiobserver{@Override Public voidUpdate () {SYSTEM.OUT.PRINTLN ("Do update ..."); } } Public voidTest () {iobserved observed=Newobserved (); IObserver Observer=NewObserver (); OBSERVED.ADDOBSERVER (Observer); Observed.notifyobservers (); } }
Observerpattern (Viewer mode)