观察者模式中分成观察者与被观察者,观察者观察被观察者。当被观察者做出某种操作变化时观察者会做出相应的变化动作。
示例:
public interface GCZ{
public void getCz(String say);
}
public Class GuanChaZhe1 implements GCZ{
String name="观察者1";
public void getCz(String say){
System.out.println(name+"说:我观察到被观察者说:'"+say+"'");
}
}
public Class GuanChaZhe2 implements GCZ{
String name="观察者2";
public void getCz(String say){
System.out.println(name+"说:我观察到被观察者说:'"+say+"'");
}
}
public Class BGCZ{
List<GCZ> gCZList=new ArrayList<GCZ>();
public void beiguanchazhe(){
String say="我知道自己被观察了";
for(int i = 0 ; i < gCZList.size() ; i++ ) {
GCZ gcz=gCZList.get[i];
gcz.getCz(say);
}
}
public void addGCZ(GCZ gcz){
gCZList.add(gcz);
}
}
public Class TestMain{
public static void main(String[] args){
BGCZ bgcz=new BGCZ();
GCZ gcz1=new GuanChaZhe1 ();
GCZ gcz2=new GuanChaZhe2 ();
//对被观察者添加观察者对象
bgcz.addGCZ(gcz1);
bgcz.addGCZ(gcz2);
// 被观察者发出自己的操作变化
bgcz.beiguanchazhe();
}
}