Hi
问题是关于如何监视一个对象的属性状态变化
就好比在 ServletContextAttributeListener 一样
当 ServletContext 属性发生变化时,会触发一段 代码的执行
我想明白的就是 如果做,才能 监视自己写的对象,并在其 指定属性发生变化时,出发一段代码呢?
请各位赐教下,小弟在此感激不尽
Hi
问题是关于如何监视一个对象的属性状态变化
就好比在 ServletContextAttributeListener 一样
当 ServletContext 属性发生变化时,会触发一段 代码的执行
我想明白的就是 如果做,才能 监视自己写的对象,并在其 指定属性发生变化时,出发一段代码呢?
请各位赐教下,小弟在此感激不尽
监控属性变化,可以使用Observer模式,Java本身提供对这种模式的支持,你按下面的例子看一下:
///你需要临视的Bean
package com.test;
import java.util.Observable;
public class Product extends Observable{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
///下面两段代码用于监控
setChanged();
notifyObservers(name);
}
}
///监控者
package com.test;
import java.util.Observable;
import java.util.Observer;
public class NameObserver implements Observer{
private String name=null;
public void update(Observable obj, Object arg) {
if(arg instanceof String){
name=(String)arg;
System.out.println("名字有变化");
}
}
///main用于测试
public static void main(String[] str){
NameObserver nameObserver=new NameObserver();
Product product=new Product();
product.addObserver(nameObserver);
//
product.setName("ccc");
}
}
当然了你还可以使用代理或spring aop的切面编程来做 :)