對於另一個問題,我遇到了一個誤解,這似乎偶爾會出現在SO這裏。有些提問者似乎認爲觸發器是作爲事件對OOP的數據庫。我需要一個類比:觸發器和事件
有沒有人有一個很好的比喻來解釋爲什麼這是一個有缺陷的比較,以及誤用它的後果?
編輯:
比爾K.正確地打它,但也許沒有看到的事件和給我的印象,反正回調函數之間的關鍵differeence的重要性。每次事件發生時,觸發器都會導致代碼執行;回調只發生在一個事件已被註冊的情況下(絕大多數事件都不是這樣);即使如此,在大多數情況下,回調的第一個動作是註銷自己(或至少回調中包含限定出口,因此它只能執行一次)。
如果您編寫觸發器,它會在每次事件發生,因爲沒有辦法註冊或取消註冊代碼段。
觸發器是一種將重複邏輯同步插入執行線程(即同步)的方法。事件是延遲邏輯直到以後的一種手段(即實現異步性)。
在這兩種情況下都有例外和緩解,但觸發器和回調的基本模式在意圖和實現方面大多相反。通常這種區別似乎並沒有完全沉入。(恕我直言,YMMV)。 :D
我相信'他'指的是某些cavelier的態度,以什麼資金有意義的觸發 – 2009-01-30 08:25:16