Java设计模式之观察者模式
2016-07-07 13:41
441 查看
一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知,此种模式通常被用来实现事件处理系统
最常见的观察者模式就是我们经常使用的事件监听器上
我们使用类图来表示观察者模式的关系:
根据类图,同样,我们要实现观察者模式,也要有两个接口,一个接口就是观察者的接口,一个接口就是被观察者的接口,根据,具体的类,即老师为观察者,学生为被观察者,分别来实现Watcher和Observer这两个接口,
下面我们分别创建Watcher这个接口和Observer这个接口:
观察者Watcher:
被观察者Observer:
public interface Observer {
public void reciveMsg(String msg);
}
然后,我们在创建一个Teacher类来实现Watcher这个接口,再创建一个Student类来实现Observer这个接口:
Teacher类:
public class Teacher implements Watcher{
private ArrayList<Observer> list = new ArrayList<Observer>();
public void addObserver(Observer obs) {
list.add(obs);
}
public void removeObserver(Observer obs) {
list.remove(obs);
}
public void notifys(String msg) {
for (Observer obs : list) {
obs.reciveMsg(msg);
}
}
}
Student类:
最常见的观察者模式就是我们经常使用的事件监听器上
我们使用类图来表示观察者模式的关系:
根据类图,同样,我们要实现观察者模式,也要有两个接口,一个接口就是观察者的接口,一个接口就是被观察者的接口,根据,具体的类,即老师为观察者,学生为被观察者,分别来实现Watcher和Observer这两个接口,
下面我们分别创建Watcher这个接口和Observer这个接口:
观察者Watcher:
public interface Watcher { public void addObserver(Observer obs); public void removeObserver(Observer obs); public void notifys(String msg); }
被观察者Observer:
public interface Observer {
public void reciveMsg(String msg);
}
然后,我们在创建一个Teacher类来实现Watcher这个接口,再创建一个Student类来实现Observer这个接口:
Teacher类:
public class Teacher implements Watcher{
private ArrayList<Observer> list = new ArrayList<Observer>();
public void addObserver(Observer obs) {
list.add(obs);
}
public void removeObserver(Observer obs) {
list.remove(obs);
}
public void notifys(String msg) {
for (Observer obs : list) {
obs.reciveMsg(msg);
}
}
}
Student类:
public class Student implements Observer{ private String name; public Student(String name) { this.name = name; } public void reciveMsg(String msg) { System.out.println(name+"收到一条消息:"+msg); } }
相关文章推荐
- LogBack实战(Maven)
- Eclipse下更换主题-Sublime的主题
- Java设计模式之装饰模式
- java注解Annotation
- Spring中@Async用法总结
- eclipse中egit插件使用
- Spring之Spring概述
- Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D)
- 关于jdk的问题
- java synchronized详解
- eclipse搭建mvn web工程
- SpringMVC重定向——有参传递
- ECLIPSE - 新建jsp页面默认模板设置
- Spring MVC拦截器
- JAVA多线程
- java面向对象的四大特性-多态,继承,抽象,封装
- SpringMVC重定向——无参传递
- Eclipse快捷大全(转载)
- java读取写入.cvs文件
- jdk与jre的介绍