码迷,mamicode.com
首页 > 其他好文 > 详细

PropertyChangeSupport 观察者模式的应用

时间:2018-04-26 21:14:45      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:功能   color   eve   move   java   nts   tor   调用   add   

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 观察者模式的应用

标签:功能   color   eve   move   java   nts   tor   调用   add   

原文地址:https://www.cnblogs.com/myseries/p/8954738.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!