從我們常用的電腦操作到事件驅動模型

拿我們經常使用的電腦打比方

  • Windows 的工作機制簡單地說就是三個關鍵的概念:窗口、事件和消息<User 通過在窗口進行各種操作從而觸發事件,該事件就會向操作系統發送相應的操作消息>。
  • 不妨簡單地將窗口看做帶有邊界的矩形區域。也許已經瞭解幾種不同類型的窗口:如,“資源管理器”窗口、文字處理程序中的文檔窗口etc.除了這些最普通的窗口外,實際上還有許多其它類型的窗口。命令按鈕是一個窗口,圖標、文本框、選項按鈕和菜單條也都是窗口。
  • Microsoft Windows 操作系統通過給每一個窗口指定一個唯一的標識號(窗口句柄或
    hwnd)來管理所有的窗口。操作系統連續地監視每一個窗口的活動或事件的信號。事件可以通過諸如單擊鼠標或按下按鍵的操作而產生,也可以通過程序的控制而產生,甚至可以由另一個窗口的操作而產生。
  • 例如,窗口每發生一次事件,將引發一條消息發送至操作系統。操作系統處理該消息並廣播給其它窗口。然後,每一個窗口才能根據自身處理該條消息的指令而採取適當的操作(例如,當窗口置頂時,其他窗口收到消息後相應的把自身的部分窗口隱藏)。

言歸正傳

  • 在面向過程的應用程序中,應用程序控制了代碼執行的先後順序
    在事件驅動的應用程序中,代碼不是按照預定的路徑執行,而是在 響應不同的事件 時,執行不同的代碼片段。事件可以由用戶操作觸發、也可以由來自操作系統或其它應用程序的消息觸發、甚至由應用程序本身的消息觸發。這些事件的順序決定了代碼執行的順序
  • 因爲事件的順序是無法預測的,所以在代碼中必須對執行時的“各種狀態”作一定的假設。當作出某些假設時(例如,假設在處理某一輸入字段的過程之前,該輸入字段必須包含確定的值),應該組織好應用程序的結構,以確保該假設始終有效(例如,在輸入字段中有值之前,禁止點擊確定按鈕)。
  • 在執行中代碼也可以觸發事件。例如,在程序中改變文本框中的文本,將引發文本框的 Change 事件。如果 Change 事件中包含有代碼,則將導致該代碼的執行。如果原來假設該事件僅能由用戶的交互操作所觸發,則可能會產生意料之外的結果。

巨人的肩膀

windows的三個重要概念
事件驅動模型

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章