今天写点软件,想想Observer模式可以解决我的问题。
应用挺简单,监控一个类里面的字符串属性的值。
这个类,可能有多个对象监控。
网上搜下,java内置支持Observer模式。
被观察者,继承Observable
观察者实现Observer接口
分别来自:
import java.util.Observable;
import java.util.Observer;
详细参考代码:
test_001为测试功能入口,将打印两次func
import java.util.Observable;
import java.util.Observer;
import org.junit.Test;
public class testObservable {
class DevObservable extends Observable
{
String name;
public void func()
{
name = "func";
setChanged(); //设置被观察者内容改变
notifyObservers(); //将引起观察者调用update
}
public String getName()
{
return name;
}
}
class DevObserver implements Observer
{
@Override
public void update(Observable o, Object arg) {
// TODO Auto-generated method stub
DevObservable d =(DevObservable)o;
System.out.println(d.getName());
}
}
@Test
public void test_001()
{
DevObservable d= new DevObservable();
DevObserver ds = new DevObserver();
d.addObserver(ds);
d.func();
d.func();
}
}