例子: 猫鼠游戏
场景:窗外 寒风凛冽
1 女主人揉着他的女儿白猫花花在熟睡,不让宠物受冻
2花花一边打呼噜一边警惕的周围,生怕老鼠在主人的脸上啃一口,猫观察老鼠
3老鼠大白想吃主人脸上的黄瓜片,猫观察主人
4 突然花花发现了大白和小白,他大吼一声,房间里发生了什么?
接口: Subject 观察者 Observer 被观察者
类 : 猫,老鼠,女主人
定义观察者接口:
public interface Subject{
aim(Observer obs);
}
定义被观察者接口:
public interface Observer{
void response();
}
定义女主人类:
public class Master{
private Subject subject;
public Master(Subject subject) {
this.subject = subject;
subject.aim( this);
}
public void response(){
System.out.println("女主人惊醒。。。。。。。。");
}
}
定义老鼠类:
public class Mouse implements Observer{
private String name;
private Subject subject;
public Mouse(String name, Subject subject) {
this.name = name;
this.subject = subject;
subject.aim(this);
}
public void response() {
System.out.println(name+"撒丫子就跑!");
}
}
定义猫类:
import java.util.ArrayList;
/**
*
* @author Administrator
*/
public class Cat implements Subject{
private String name;
private ArrayList<Observer> observers=new ArrayList<Observer>();
public Cat(String name){
this.name=name;
}
public void aim(Observer obs) {
this.observers.add(obs);
}
public void cry(){
System.out.print(name+"大吼一声:哪里跑!");
for(Observer obs:observers){
obs.response();
}
}
}
测试类:
package mousecat;
/**
*
* @author Administrator
*/
public class Test {
public static void main(String[] args){
Cat cat=new Cat("花花");
Master master=new Master(cat);
Mouse m1=new Mouse("大白", cat);
Mouse m2=new Mouse("小白", cat);
cat.cry();
}
}