package 设计模式.观察者模式;publicclassObserverNoodlesextendsObserver{publicObserverNoodles(String name,Subject subject){super(name, subject);}@Overridepublicvoiddelivery(){System.out.println(name +" delicious food is delivering");}@OverridepublicvoidmakeTea(){}}
package 设计模式.观察者模式;publicclassObserverTeaMakerextendsObserver{publicObserverTeaMaker(String name,Subject subject){super(name, subject);}@Overridepublicvoiddelivery(){}@OverridepublicvoidmakeTea(){System.out.println(this.name +" is making tea for client");}}
package 设计模式.观察者模式;importjavafx.beans.binding.ObjectExpression;importjava.util.ArrayList;publicclassSubject{privateString name="chef";privateArrayList<Observer> observers =newArrayList<>();publicSubject(){
observers.add(newObserverNoodles("noodleDeliver",this));
observers.add(newObserverTeaMaker("teaMaker",this));}publicvoidcook(){System.out.println("chef is making delicious food!!");noticeAllObserver();}publicvoidnoticeAllObserver(){for(Observer obs :
observers){if(obs instanceofObserverNoodles){
obs.delivery();}else{
obs.makeTea();}}}}
package 设计模式.观察者模式;publicclassDemo{publicstaticvoidmain(String[] args){Subject chef =newSubject();
chef.cook();}}