PropertyChangeSupport 监听器模式的应用
PropertyChangeSupport 类实现的监听器功能 ,它是java jdk自带的一个类,用于监听某个对象属性的改变来触发相应信息,具体看代码介绍
import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; class EventSource { private String name; /* * 在事件源的地方添加一个PropertyChangeSupport对象,间接地由它负责添加监听、激发事件 */ private PropertyChangeSupport listernts=new PropertyChangeSupport(this); /** * 在事件源上添加监听,实际上是在PropertyChangeSupport对象上添加监听 */ public void addListner(PropertyChangeListener listern) { listernts.addPropertyChangeListener(listern); } /** * 同上 */ public void removeListner(PropertyChangeListener listern) { listernts.removePropertyChangeListener(listern); } public String getName() { return name; } /** * 事件源发生变化时,也是通过PropertyChangeSupport对象把事件发送到监听者上的 */ public void setName(String name) { this.name = name; // 触发事件源,监听者得到触发变化 listernts.firePropertyChange(null,null,getName()); } } class Monitor implements PropertyChangeListener{ @Override public void propertyChange(PropertyChangeEvent evt) { System.out.println("事件源 发生变化,请做相应处理!"); } } public class TestPropertyChangeSupport { public static void main(String[] args) { EventSource eventSource = new EventSource(); Monitor monitor = new Monitor(); //在事件源上添加监听,发生变化时就会调用propertyChange方法 eventSource.addListner(monitor); eventSource.setName("更改name属性值"); } }
打印结果: 事件源 发生变化,请做相应处理!