//被觀察者接口,有添加觀察者對象,喚醒所有觀察者等方法申明。 public interface ISubject { public void setName(String name); public String getName(); public void addObserver(IObserver o); public void notifyAllObserver(); }
import java.util.*; public class Subject implements ISubject{ private String name; List<IObserver> observers = new ArrayList<IObserver>(); public Subject(){} public Subject(String name){ this.name=name; } public String getName(){ return this.name; } public void setName(String name){ this.name=name; } public void addObserver(IObserver o){ observers.add(o); } public void notifyAllObserver(){ for(int i=0;i<observers.size();i++){ observers.get(i).showInfo(); } } }
//觀察者接口。 public interface IObserver { public void showInfo(); }
public class Observer implements IObserver{ private ISubject sjtref = null; public void setRef(ISubject sjt){ this.sjtref=sjt; } public Observer(ISubject sjtref){ super(); this.sjtref=sjtref; } public void showInfo(){ System.out.println("Observering:"+sjtref.getName()); } }
public class ObserverMain { public static void main(String args[]){ //新建被觀察對象 ISubject subject = new Subject("Shen,Ziping"); //新建觀察者對象 IObserver observer1 = new Observer(subject); //注冊 subject.addObserver(observer1); //喚醒觀察者 subject.notifyAllObserver(); } }
|