package com.github.atemerev.pms.examples.routine; import com.github.atemerev.pms.examples.helloworld.Evening; import com.github.atemerev.pms.examples.helloworld.HelloWorldHandler; import com.github.atemerev.pms.examples.helloworld.Morning; import com.github.atemerev.pms.listeners.MessageListenerDelegate; import com.github.atemerev.pms.listeners.dispatch.DispatchListener; /** * 广播: 消息发送给多个监听器 * @author Alexander Temerev * @version $Id$ */ public class Main { public static void main(String[] args) { //testLife(); testDelegate(); } public static void testLife(){ //消息分发路由器: 在Life内部引用了MessageListenerDelegate. //添加监听器,处理消息的逻辑都会交给MessageListenerDelegate去执行 Life life = new Life(); //MessageListenerDelegate要依赖于DispatchListener //否则无法回调到自定义Handler类的事件处理逻辑. //1.DispatchListener的实例化可以是接收一个类作为参数 DispatchListener helloWorld = new DispatchListener(new HelloWorldHandler()); //2.或者直接继承:DailyRoutineHandler继承了DispatchListener DailyRoutineHandler dailyRoutine = new DailyRoutineHandler(); //加入listeners列表中的是MessageListener监听器实现类 //一个事件发给多个监听器, 每个监听器都会对事件做出响应 life.listeners().add(helloWorld); life.listeners().add(dailyRoutine); life.processMessage(new Morning()); System.out.println("============"); life.processMessage(new Evening()); } public static void testDelegate(){ MessageListenerDelegate delegate = new MessageListenerDelegate(); DispatchListener helloWorld = new DispatchListener(new HelloWorldHandler()); DailyRoutineHandler dailyRoutine = new DailyRoutineHandler(); delegate.listeners().add(helloWorld); delegate.listeners().add(dailyRoutine); delegate.processMessage(new Morning()); System.out.println("================"); delegate.processMessage(new Evening()); } }