Importjava.util.ArrayList;ImportJava.util.Iterator;/*Abstract Viewer Class*/Abstract classObserver { Public Abstract voidupdate ();}/*abstract observed subject class*/Abstract classsubject{PrivateArrayList obs_list =NewArrayList (); Public voidAttach (Observer obs) {obs_list.add (OBS); } Public voidDetach (Observer obs) {obs_list.remove (OBS); } Public voidnotifyobs () { for(Iterator iter =obs_list.iterator (); Iter.hasnext ();) {Observer Obs=(Observer) iter.next (); Obs.update (); } }}/*specific Observer class*/classConcreteobserverextendsObserver {PrivateString Obs_name; PrivateConcreteSubject cc_subj; PublicConcreteobserver (String obs_name, ConcreteSubject cc_subj) { This. Obs_name =Obs_name; This. CC_SUBJ =cc_subj; } Public voidUpdate () {if(Cc_subj.getstatus () = = 1) {System.out.println ("Boss come back," + Obs_name + "Turn off screen!"); } Else{System.out.println ("Boss go out," + Obs_name + "Turn on screen!"); } }}/*specific observation topic class*/classConcreteSubjectextendsSubject {Private intstatus; PublicConcreteSubject (intstatus) { This. Status =status; } Public intGetStatus () {returnstatus; } Public voidSetStatus (intstatus) { if(Status! = This. Status) { This. Status =status; Super. Notifyobs (); } } } Public classobserver_test{ Public Static voidMain (string[] args) {ConcreteSubject cc_sub=NewConcreteSubject (0); Concreteobserver CC_OBS1=NewConcreteobserver ("E1", cc_sub); Concreteobserver CC_OBS2=NewConcreteobserver ("E2", cc_sub); Concreteobserver CC_OBS3=NewConcreteobserver ("E3", cc_sub); Cc_sub.attach (CC_OBS1); Cc_sub.attach (CC_OBS2); Cc_sub.attach (CC_OBS3); Cc_sub.setstatus (1);//status changed to 1System.out.println ("---------------------------------------"); Cc_sub.setstatus (0);//status changed to 0 }}
Result
Boss come back, E1 turn off screen!
Boss come back, E2 turn off screen!
Boss come back, E3 turn off screen!
---------------------------------------
Boss go out, E1 turn on screen!
Boss go out, E2 turn on screen!
Boss go out, E3 turn on screen!
Observer pattern (Java implementation)