Recently, the design pattern has been more and more attention by enterprises and programmers, and as a beginner, I will learn the bit by post to the blog park, share ~
The Java.util package provides support for the observer pattern, and the following is a copy of the observer and observable that wrote my observer pattern code.
Package Com.myobserver; Public Interface Observer { void update (Observable obs, Object obj);}
Package Com.myobserver; Public Interface Observable { publicvoid addobserver (Observer obs); Public void deleteobserver (Observer obs); Public void notifyobservers (Object obj);}
PackageCom.myobserver;Importjava.util.ArrayList;Importjava.util.List; Public classConcreteobservableImplementsObservable {List<Observer> list =NewArraylist<observer>(); @Override Public voidaddobserver (Observer obs) {//TODO auto-generated Method StubList.add (OBS); } @Override Public voiddeleteobserver (Observer obs) {//TODO auto-generated Method StubList.remove (OBS); } @Override Public voidnotifyobservers (Object obj) {//TODO auto-generated Method Stub for(Observer observer:list) {observer.update ( This, obj); } }}
Package Com.myobserver; Public class Implements Observer { @Override publicvoid update (Observable obs, Object obj) { // TODO auto-generated Method stub System.out.println ("------------concreteobserver received update info" + obj + "from" + Obs);} }
Package Com.myobserver; Public class Implements Observer { @Override publicvoid update (Observable obs, Object obj) { // TODO auto-generated method stub System.out.println ("------------ ConcreteObserver2 received update info " + obj +" from "+ Obs);} }
PackageCom.myobserver; Public classTest { Public Static voidMain (string[] args) {concreteobservable observable=Newconcreteobservable (); Concreteobserver Observer1=NewConcreteobserver (); ConcreteObserver2 Observer2=NewConcreteObserver2 (); Observable.addobserver (Observer1); Observable.addobserver (OBSERVER2); Observable.notifyobservers ("Send a Broacast"); }}
Output Result:------------Concreteobserver received update info Send a broacast [email protected]------------ ConcreteObserver2 received update info Send a broacast [email protected]
This is mainly to understand the concept of design patterns, so do not consider multithreading synchronization.
One of the design mode Java Editions: Observer mode