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属性值");
    }
}

 打印结果:   事件源 发生变化,请做相应处理!

posted @ 2018-04-26 19:58  myseries  阅读(3020)  评论(0编辑  收藏  举报