2014-12-06 35 views
0

通常,編寫接收外界事件的系統的技術是什麼?例如。藍牙應用程序可以接收來自HCI的許多低級別事件。它必須跟蹤經常臨時的狀態,並根據當前狀態允許/禁止操作。處理事件驅動應用程序的複雜性的技巧

是否有幫助處理如此複雜一些具體的技術?有更詳細的描述一些實用文獻嗎?

+1

你檢查觀察者設計模式 – Panther 2014-12-06 21:06:08

+0

@Panther我知道觀察者。我懷疑還有更多的技術。 – Trismegistos 2014-12-07 17:10:28

+0

我們有些人沒有發現事件驅動的應用程序很複雜。一旦你習慣於讓事情發生而不是事情發生,它們真的很簡單。 – 2014-12-09 14:23:04

回答

0

那麼觀察者模式是主要的也許是唯一模式處理這類案件。儘管它有各種變化,比如消息驅動的合作,pub-sub,主題或基於標籤的合作,但其中大多數都重用觀察者模式的意識形態。

現在作曲複雜性。通常事件觀察員和發佈者本質上是無狀態的。即他們接受和事件,並且他們要麼傳播他們要麼消耗他們。現在傳播很容易,但消費可能會很棘手,因爲消費的含義可能因目標和事件類型而異。然後,與生產和消費事件的操作的執行有關的複雜性。在這裏,一個好的設計會使事件互相排斥。這意味着兩次點擊一個按鈕或兩個文件寫入不會以任何方式相互依賴。事件的消費也應該是這樣。消費過程不應該依賴於事件到達的順序。

一個好的事件觀察器設計利用無狀態的生產者和消費者,域驅動的事件對象(事件對象知道它是應該去)和併發性的生產和消費滿滿當當。

+0

大部分應用程序不能是無狀態的。藍牙芯片有固有的狀態。藍牙已配對或連接。芯片正在查詢等 – Trismegistos 2014-12-10 09:26:03

+0

是的,但一個好的設計不會使'藍牙'對象成爲事件的製作者或消費者。相反,藍牙適配器服務或配對服務會生成事件並將藍牙對象與事件相關聯。事件內部可以訪問藍牙的狀態。 – Nazgul 2014-12-10 15:15:59