观察者模式(看完马士兵视频的总结)

例子就是一个小孩在睡觉,当小孩醒过来之后,爸爸要喂奶,爷爷要哄哄。。。。。。

package com.blank.test;

import java.util.ArrayList;
import java.util.List;

public class Child implements Runnable {
	private List<WakeUpListener> list = new ArrayList<WakeUpListener>();

	public void addListenrt(WakeUpListener wul) {
		list.add(wul);
	}

	public void wakeUp() {
		for (WakeUpListener w : list) {
			w.actionEvent(new WakeUpEvent(System.currentTimeMillis(), this));
		}
	}

	public void run() {
		try {
			Thread.sleep(3000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		this.wakeUp();
	}
}

package com.blank.test;

public class WakeUpEvent {
	long time;
	Child c;

	public long getTime() {
		return time;
	}
	public WakeUpEvent(long time, Child c) {
		this.time = time;
		this.c = c;
	}
}

package com.blank.test;

public class Dad implements WakeUpListener {
	public void actionEvent(WakeUpEvent e) {
		System.out.println("Dad触发方法。" + e.getTime());
	}
}
package com.blank.test;

public class GrandFather implements WakeUpListener {

	public void actionEvent(WakeUpEvent e) {
		System.out.println("GrandFather触发方法。" + e.getTime());
	}

}

package com.blank.test;

import java.io.IOException;
import java.util.Properties;

public class Test {
	public static void main(String[] args) {
		Child c = new Child();
		Properties p = new Properties();
		try {
			p.load(Test.class.getClassLoader().getResourceAsStream(
					"com/blank/test/class.properties"));
		} catch (IOException e) {
			e.printStackTrace();
		}
		String s = p.getProperty("class");
		String name[] = s.split(",");
		for (String n : name) {
			try {
				WakeUpListener w = (WakeUpListener) Class.forName(n)
						.newInstance();
				c.addListenrt(w);
			} catch (InstantiationException e) {
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				e.printStackTrace();
			} catch (ClassNotFoundException e) {
				e.printStackTrace();
			}
		}
		new Thread(c).start();
	}
}

设计到了properties读取配置文件,之后再总结下。

和awt时间模型类似。

感触很深,以后Swing用监听器都会想到这段代码。



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值