PropertyChangeListener简单理解
博客专区 > jeeshop 的博客 > 博客详情
PropertyChangeListener简单理解
jeeshop 发表于5年前
PropertyChangeListener简单理解
  • 发表于 5年前
  • 阅读 1504
  • 收藏 2
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

/**
 * 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");
	}
}


  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 21
博文 17
码字总数 8868
作品 1
×
jeeshop
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: