小孩醒来事件通知监听者 模拟代码: package test1; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Properties; class Child implements Runnable{ @Override public void run() { // TODO Auto-generated method stub try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } this.wakeUp(); } List<WakeUpListener> list=new ArrayList<WakeUpListener>(); public void addWakeUpListener(WakeUpListener wakeUpListener){ list.add(wakeUpListener); } private void wakeUp() { // TODO Auto-generated method stub for (int i = 0; i < list.size(); i++) { WakeUpListener wakeUpListener=list.get(i); wakeUpListener.actionToWakeUp(new WakeUpEvent(System.currentTimeMillis(),"gjl",this)); } } } interface WakeUpListener{ public void actionToWakeUp(WakeUpEvent wakeUpEvent); } class WakeUpEvent{ private long time; private String locString; private Object resourceObject; public long getTime() { return time; } public void setTime(long time) { this.time = time; } public String getLocString() { return locString; } public void setLocString(String locString) { this.locString = locString; } public Object getResourceObject() { return resourceObject; } public void setResourceObject(Object resourceObject) { this.resourceObject = resourceObject; } public WakeUpEvent(long time, String locString, Object resourceObject) { super(); this.time = time; this.locString = locString; this.resourceObject = resourceObject; } } class Dad implements WakeUpListener{ @Override public void actionToWakeUp(WakeUpEvent wakeUpEvent) { // TODO Auto-generated method stub System.out.println("Dad"); } } class Mother implements WakeUpListener{ @Override public void actionToWakeUp(WakeUpEvent wakeUpEvent) { // TODO Auto-generated method stub System.out.println("mother"); } } public class Test1{ public static void main(String[] args) { Child child=new Child(); Properties properties=new Properties(); try { properties.load(Test1.class.getClassLoader().getResourceAsStream("test1/observer.properties")); String[] proStrings=properties.getProperty("observers").split(","); for (int i = 0; i < proStrings.length; i++) { try { WakeUpListener wakeUpListener=(WakeUpListener)Class.forName(proStrings[i]).newInstance(); child.addWakeUpListener(wakeUpListener); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } new Thread(child).start(); } } 所需observer.properties放在和模拟代码同目录下。 observers=test1.Dad,test1.Mother