美文网首页
数据总线模式

数据总线模式

作者: 石器时代小古董 | 来源:发表于2018-02-06 16:32 被阅读0次
框架可以通过发送特定的数据 触发特定的组件

一、核心的数据分发器

1.Member 代表订阅的组件
2.subscribe:将所有的业务组件加入到了一个集合中
3.publish: 触发事件,尝试像所有订阅的事件集合中出入该类型数据,由他们决定是否处理

 */
public class DataBus {
  private static final DataBus INSTANCE = new DataBus();
  private final Set<Member> listeners = new HashSet<>();

  public static DataBus getInstance() {
    return INSTANCE;
  }
  public void subscribe(final Member member) {
    this.listeners.add(member);
  }
  public void unsubscribe(final Member member) {
    this.listeners.remove(member);
  }
  public void publish(final DataType event) {
      event.setDataBus(this);
     for(Member m:listeners){
        m.accepts(event);
     }
   }
}

数据类型

public class MessageData extends AbstractDataType {
  private final String message;
  public MessageData(String message) {
    this.message = message;
  }
  public String getMessage() {
    return message;
  }
  public static DataType of(final String message) {
    return new MessageData(message);
  }
}

被触发的模块

accept:代表这个模块处理什么样的数据 是否处理发过来的消息

public interface Member extends Consumer<DataType> {
  void accept(DataType event);
}

这是一个成员的例子,当accept方法在DataBus中触发时,这个模块会自己判断是否是需要它处理的数据
如果是就会执行相应的功能--handleEvent

public class MessageCollectorMember implements Member {

  private List<String> messages = new ArrayList<>();

  @Override
  public void accept(final DataType data) {
    if (data instanceof MessageData) {
      handleEvent((MessageData) data);
    }
  }

  private void handleEvent(MessageData data) {
    LOGGER.info(String.format("%s sees message %s", name, data.getMessage()));
    messages.add(data.getMessage());
  }
}

相关文章

  • 数据总线模式

    一、核心的数据分发器 1.Member 代表订阅的组件2.subscribe:将所有的业务组件加入到了一个集合中3...

  • 计算机基础知识点

    计算机的总线分为:控制总线、数据总线和地址总线。 1、控制总线:主要用来传送控制信号和时序信号。 2、数据总线:是...

  • 数据总线(Data Bus)模式

    提出问题 前些天面试的时候被问起redis集群的问题,问及Redis集群中如何实现高可用,答曰每个节点都有Mast...

  • 内存,地址,分页,指针

    系统总线计算机系统总线分为数据总线,控制总线和地址总线.其中和内存相关的是数据总线和地址总线,有些cpu中,这两者...

  • iPhone的I/O设备和CPU

    在CPU内部 分为地址总线和数据总线, 地址总线,用来访问I/O 端口直接寻址, 数据总线用来快速的传输数据。(经...

  • 汇编笔记

    cpu和存储器芯片通过总线交互,总线从逻辑上分为三类:地址总线,控制总线和数据总线,比如cpu从内存中读取数据:地...

  • CPU三大总线

    一根总线传送一比特(bit)的数据,八根就是一个字节(byte)的数据。 总线分为三种:地址总线,数据总线,控制总...

  • 9.21总结

    知识归纳: 1.总线接口【并行总线、串行总线】 2.并行总线数据传输:数据线、地址线、控制线、时钟线。 3.串行:...

  • 软件设计师备考知识05--设计模式

    1 总线 处理机主要由 处理器、存储器、总线组成。总线包括:数据总线、地址总线、控制总线 总线:任何连接两个以上电...

  • 总线模式

    ::: tip『总线模式』并非 23 种设计模式之一。它更像是一种编程技巧。:::

网友评论

      本文标题:数据总线模式

      本文链接:https://www.haomeiwen.com/subject/rgmgzxtx.html