1. 程式人生 > >PropertyChangeSupport 觀察者模式的應用

PropertyChangeSupport 觀察者模式的應用

AD 發生 list 負責 get urn chan prope 屬性

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

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

PropertyChangeSupport 觀察者模式的應用