天天看點

TRA - 20201129 (關于 Event-Driven 模式的一些思考)

目錄

  • Review
  • Tip
  • Alg

本周看了 《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“):

  • 元件群組件之間的聯系複雜,每個元件至少可以被兩個其餘的元件發出的非初始事件觸發。
  • 所有的事件的觸發不依賴執行結果

MacOS 上浏覽網頁的話,如果有不認識的單詞,可以将滑鼠指向該單詞,使用快捷鍵

Ctrl + Cmd + D

直接進行原生 Dictionary 的翻譯。

統計「優美子數組」

這是一個 0-1 背包問題,比較簡單

繼續閱讀