例子就是一个小孩在睡觉,当小孩醒过来之后,爸爸要喂奶,爷爷要哄哄。。。。。。
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用监听器都会想到这段代码。