您的位置:首页 > 运维架构

PropertyChangeListener简单理解

2012-09-26 00:55 2336 查看

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

/**
 * 2012-9-26
 * jqsl2012@163.com
 */
package design.propertyListener;

import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;

/**
 * @author  li
 * 后台服务
 */
public class Service {
private PropertyChangeSupport support = new PropertyChangeSupport(this);
private String name;

public String getName() {
return name;
}

public void setName(String name) {
String oldValue = this.name;
this.name = name;
firePropertyChange("name", oldValue, name);
}

public void firePropertyChange(String propertyName,Object oldValue,String newValue){
support.firePropertyChange(propertyName, oldValue, newValue);
}

public void addPropertyChangeListener(PropertyChangeListener listener) {
support.addPropertyChangeListener("name",listener);
}
}
/**
 * 2012-9-26
 * jqsl2012@163.com
 */
package design.propertyListener;

import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;

/**
 * @author  li
 * UI界面
 */
public class UI {

private Service s;

/**
 * @param s
 */
public UI(Service s) {
this.s = s;
}

public void init() {
s.addPropertyChangeListener(new PropertyChangeListener() {

@Override
public void propertyChange(PropertyChangeEvent evt) {
System.out.println("UI界面收到Service后台数据发生变化的通知,然后UI界面开始刷新。");
}
});
}
}
/**
 * 2012-9-26
 * jqsl2012@163.com
 */
package design.propertyListener;

/**
 * @author  li
 *
 */
public class Test {
public static void main(String[] args) {
/*
 * 后台服务本来是UI界面的一部分,那么后台数据发生变化了后前台UI界面要得到通知
 */
Service s = new Service();
UI ui = new UI(s);
ui.init();

//后台数据变化了
s.setName("name");
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息