目錄
- 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 背包問題,比較簡單