`
lylegend13
  • 浏览: 81140 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

观察者模式学习

阅读更多

test1是被观察者,

 

test2是观察者,监听test1中的变化

 

package test;

import java.util.Date;
import java.util.Observable;

public class test1 extends Observable {

	int i = 0;

	public static void main(String[] args) {
		test1 t1=new test1();
		test2 t2=new test2();
		t1.addObserver(t2);
		t2.exec();
		t1.exec();
	}

	public void exec() {
		new Thread() {
			public void run() {
				try {
					while (true) {
						System.out.println("test1\t"+(++i));
						setChanged();
						notifyObservers(i);
						System.out.println("test1\t"+new Date());
						sleep(2000);
					}
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}.start();
	}
}

 

package test;

import java.util.Date;
import java.util.Observable;
import java.util.Observer;

public class test2 implements Observer {
	
	int oldi = 0,newi=0;
	
	public void exec(){
		new Thread() {
			public void run() {
				try {
					while (true) {
						if(newi!=oldi){
							System.out.println("test2\t"+newi);
							System.out.println("test2\t"+new Date());
							oldi=newi;
						}
					}
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}.start();
	}

	@Override
	public void update(Observable arg0, Object arg1) {
		newi=Integer.valueOf(arg1.toString()).intValue();
	}
}

 

http://blog.csdn.net/goggler/archive/2009/12/20/5044983.aspx

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics