public class Cat {
private String name;
private CatListener cl;
public Cat(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
public void climb(){
System.out.println(name+" is climb...");
if(cl!=null){
cl.help(new CatEvent(this));
}
}
public void addCatListener(CatListener cl){
this.cl = cl;
}
}
</pre><pre name="code" class="java">
public interface CatListener {
public void help(CatEvent ce);
}
public class CatEvent {
private Cat cat;
public CatEvent(Cat cat) {
super();
this.cat = cat;
}
public Object getSource(){
return cat;
}
}
以上述例子为例,监听者模式包括三个重要组成部分:
Cat(事件源,被观察者)
CatListener(监听者)
CatEvent(事件,在其内部可拿到事件源对象)
public class Demo {
public static void main(String[] args) {
Cat cat = new Cat("小黑");
Cat cat2 = new Cat("小白");
CatListener cl = new CatListener() {
@Override
public void help(CatEvent ce) {
Cat cat2 = (Cat) ce.getSource();
if(cat2.getName().equals("小黑")){
System.out.println("你好啊...");
}
}
};
cat.addCatListener(cl);
cat2.addCatListener(cl);
cat.climb();
System.out.println("--------------");
cat2.climb();
}
}