PropertyChangeListener简单理解

/**
 * 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");
	}
}
相关文章
相关标签/搜索