论坛首页 Java企业应用论坛

Observer模式初探

浏览 2886 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (3)
作者 正文
   发表时间:2009-04-14   最后修改:2009-07-09

去印客面试,dlee问了下Observer模式,我知道Observer是什么,也用过java.util.Observable和java.util.Observer,回来后再看看Observer是怎么实现的,写了个小例子,简单的思考了下Observer

 

public class Test {
	public static void main(String[] args) {
		MyObserver myor = new MyObserver();
		MyObservable myoe = new MyObservable(myor);
		myoe.setData(1);
		myoe.setData(2);
		myoe.setData(3);
	}
}

class MyObservable {
	private boolean isChanged;
	private int data;
	private MyObserver mo;

	public MyObservable(MyObserver mo) {
		this.mo = mo;
	}

	private void setChanged() {
		isChanged = true;
	}

	public int getData() {
		return data;
	}

	public void setData(int data) {
		this.data = data;
		setChanged();
		notifyObservers();
	}

	public void notifyObservers() {
		if (isChanged == true) {
			mo.update(this);
		}
		isChanged = false;
	}

}

class MyObserver {
	public void update(MyObservable mo) {
		System.out.println("data is changed to " + mo.getData());
	}
}
   发表时间:2009-06-10  
Observerable依赖Observer接口,观察模式是OCP原则的一个很好的例子
0 请登录后投票
   发表时间:2009-09-15  
原本模糊的概念,现在清晰很多了,谢谢
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics