TRA

Review

本周看了 《Fundamentals of Software Architecture》 的 "Chapter-14 Event-Driven Architecture“ , 其中对比了

  • 层层分发控制逻辑的模式 ,和 无控制逻辑,依赖事件驱动的模式(Android 的 EventBus) 的特点
  • 举出了一些例子场景分析了这两模式的典型使用方式等
  • Event-Driven Topology 里的一些常见问题以及通用解决方法

阅读感受(简单的感受,可能不够有条理,不能作为覆盖性质的总结):

  • Event-Driven 会导致其中各个组件的终极解耦(毫无关联);但同时会丢掉一些信息,因为其哲学就是 ”组件之间互相一无所知,组件无法知道 event 的来源是谁“。是以忽略一些信息为代价换来的解耦。
    • 拓展提问: 解耦是否都是以丧失信息为代价的? POP 哲学变为 OOP 哲学, 是不是也是丢弃了一部分(不值得在意的)信息?
    • Event-Driven 比较适合组件之间的信息不需要在意的情况。
  • Event-Driven 比较适合 触发 而非 请求 的场景,即 不关心返回值和执行的情况
    • 这点比较难做,因为绝大多数 同步 的程序,组件之间都会有 请求
  • 组件之间的解耦越高,越适合 Event-Driven 的模式。
    • 例如多进程的场景

Event-Driven Topology 适合满足如下条件的场景 (下面的”组件“指的即是 ”EventProcessor“):

  • 组件和组件之间的联系复杂,每个组件至少可以被两个其余的组件发出的非初始事件触发。
  • 所有的事件的触发不依赖执行结果

Tip

MacOS 上浏览网页的话,如果有不认识的单词,可以将鼠标指向该单词,使用快捷键 Ctrl + Cmd + D 直接进行原生 Dictionary 的翻译。

Alg

统计「优美子数组」

这是一个 0-1 背包问题,比较简单

原文地址:https://www.cnblogs.com/wkmcyz/p/14059410.html