【Betty】发布订阅 —— 事件监听器

shadowLogo

为什么要设计 事件监听器?

可能有同学有疑问:

作为一款 网络通信框架,为什么要设计 事件监听器 呢?

答曰:

在app开发者使用本框架去开发时,
在有些情况下,需要 监听客户端的连接状态,以便在服务端进行一些连接优化逻辑

那么,在本文中,本人来讲解下,在 Betty 中 如何设计 事件监听器


实现思路:

要想设计监听器,就要使用到本人之前博文中,所讲解的 发布订阅设计模式(观察者模式)

但是,使用本框架进行开发,发布者如何发布消息,订阅者如何处理消息
这些逻辑都是 我们暂时 未知的,
因此,在本框架中,我们只能通过 接口 来 规范和实现 事件监听器


依照 之前博文所讲解的内容上文的分析,本人现在来实现下 事件监听器

实现代码:

事件发布者 —— ISpeaker接口:

package edu.youzg.betty.event;

public interface ISpeaker {
    /**
     * 新增 订阅者
     * @param listener 新增的订阅者
     */
    void addListener(IListener listener);

    /**
     * 移除 制定观察者
     * @param listener 要移除的订阅者
     */
    void removeListener(IListener listener);

    /**
     * 发布消息
     * @param message 要发布的消息
     */
    void publishMessage(String message);
}

事件订阅者 —— IListener接口:

package edu.youzg.betty.event;

public interface IListener {
    /**
     * 处理 发布者发布的消息字符串
     * @param message 发布者发布的消息字符串
     */
    void processMessage(String message);
}

至此,事件监听器 就设计完毕了!

具体的 发布/订阅逻辑,还是需要 框架的使用者去实现
那么,在之后的博文中,本人使用 讲解完毕的框架去 开发 聊天室时,会进行使用展示!

posted @ 2020-04-22 00:30  在下右转,有何贵干  阅读(39)  评论(0编辑  收藏  举报