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");
	}
}
相關文章
相關標籤/搜索