设计模式 --- 使用监听驱动实现观察者模式

Posted jomini

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式 --- 使用监听驱动实现观察者模式相关的知识,希望对你有一定的参考价值。

发短信功能

@Service // spring托管
public class OrderService {

    @Autowired
    ApplicationContext applicationContext;

    /**
     * 电商 - 新订单 -- 不断维护(外包除外)--- 后面接手的人 才是接盘
     */
    public void saveOrder() {
        // TODO 主要职责:创建订单 -- 不符合:单一职责,开闭原则
        // 1 ---创建订单--- TODO 此处省略100行代码
        System.out.println("1、 订单创建成功");

        // 源头 -- 事件产生之处。--- 原理表述: 产生一个事件,触发相关的监听器执行
        OrderEvent orderEvent = new OrderEvent("参数");
        applicationContext.publishEvent(orderEvent);

    }
}

 

订单事件

public class OrderEvent extends ApplicationEvent {
    public OrderEvent(Object source) {
        super(source);
    }
}

  

短信

// 订单事件的监听器
@Component // 交给spring托管 -- 创建对象并且保留在IOC容器
public class SmsListener implements ApplicationListener<OrderEvent> {
    @Override
    public void onApplicationEvent(OrderEvent event) {
        // 2 --- 发送短信 --- TODO 此处省略短信接口调用的N行代码
        System.out.println("2、 短信发送成功");
    }
}

 

微信

// 订单事件的监听器
@Component // 交给spring托管
public class WxListener implements ApplicationListener<OrderEvent> {
    @Override
    public void onApplicationEvent(OrderEvent event) {
        // 3 --- 发送微信通知 ----
        System.out.println("3. 发送微信消息");
    }
}

  

 

 

 

 

 

 

 

 

 

 

 

 

  

以上是关于设计模式 --- 使用监听驱动实现观察者模式的主要内容,如果未能解决你的问题,请参考以下文章

Node.js自定义对象事件监听与发射

揭开观察者设计模式的神秘面纱,手把手教你写监听器

java中jna使用回调实现事件监听器——观察者模式

监听器模式和观察者模式的关系,写点你不知道的

设计模式(Javaee)之---监听者模式

iOS 设计模式(五)-KVO 详解