观察者模式实现的效果类似于监听器,可以对某个操作之后执行我们自己的代码;
被观察者需要实现Observable类,在需要监听的方法中设置改变点(setChange),调用notifyObservers方法。
实现Observer接口创建观察者,实现update方法,编写自己的代码。
被观察者类
观察者类
测试代码
输出结果
name change to----->hehe
被观察者类
public class Product extends Observable{
private String name;
public Product(String name){
this. name = name;
}
public void setName(String name) {
this. name = name;
//设置改变
setChanged();
//触发
notifyObservers(name);
}
public String getName() {
return name;
}
}
观察者类
public class MyObserver implements Observer {
@Override
public void update(Observable arg0, Object arg1) {
/*
* arg0 为被观察对象
* arg1 为 notifyObservers()方法所传入的参数
* */
//根据arg1参数判定执行我们所需要的操作
if(arg1 instanceof String){
System. out.println( "name change to----->"+arg1);
}
}
}
测试代码
public static void main(String[] args) {
Product p = new Product( "haha");
p.addObserver( new MyObserver());
p.setName( "hehe");
}
输出结果
name change to----->hehe
本文介绍了一种常用的设计模式——观察者模式。通过示例代码详细解释了如何利用Java中的Observable类和Observer接口来实现该模式。被观察者在状态发生变化时会通知所有观察者,并传递相关参数。
1221

被折叠的 条评论
为什么被折叠?



