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

 打印結果:   事件源 發生變化,請做相應處理!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM