在與一些年歲較大的C程序員接觸的過程中,可以比較明顯的感受到C的思維方式與面向對象思想的不同。C的世界很清澈,先做A, 再做B, 我們所期待發生的計算過程與源代碼的結構是直接一一對照的。這意味着程序將要執行的計算過程在編寫代碼的時刻就已經確定下來。面向對象首先需要確定的是類,對象等中間元素,而並不是最終的計算過程。對象可以之間可以產生很複雜的結構關係,透過這種中間邏輯結構我們來理解最終要發生的計算過程。在事件驅動的應用場景下,面向對象是一種更加有效的描述,
o.someFunc() o.onEventA();
sub1.someFunc(); ==> sub1.onEventA();
sub2.someFunc(); sub2.onEventB();
如果把對象看作是函數+狀態的集合,則對象組裝的關係實際上是函數集合之間的一種組裝關係。當具體的事件發生的時候,將觸發對象上確定的響應函數,此時在各個層面上所實際發生的計算才能被確定下來。