importjava.util.ArrayList;importjava.util.List;// 抽象观察者interfaceObserver{voidupdate(Stringmessage);}// 抽象被观察者接口interfaceSubject{voidaddObserver(Observerobserver);voidremoveObserver(Observerobserver);voidnotifyObservers();}// 具体被观察者classConcreteSubjectimplementsSubject{privateList<Observer>observers=newArrayList<>();privateStringstate;@OverridepublicvoidaddObserver(Observerobserver){observers.add(observer);}@OverridepublicvoidremoveObserver(Observerobserver){observers.remove(observer);}@OverridepublicvoidnotifyObservers(){for(Observerobserver:observers){observer.update(state);}}publicvoidsetState(Stringstate){this.state=state;notifyObservers();}}// 具体观察者classConcreteObserverimplementsObserver{privateStringname;publicConcreteObserver(Stringname){this.name=name;}@Overridepublicvoidupdate(Stringmessage){System.out.println(name+" received update: "+message);}}// 客户端publicclassMain{publicstaticvoidmain(String[]args){ConcreteSubjectsubject=newConcreteSubject();Observerobserver1=newConcreteObserver("Observer1");Observerobserver2=newConcreteObserver("Observer2");subject.addObserver(observer1);subject.addObserver(observer2);subject.setState("New State 1");subject.setState("New State 2");}}