系統程式設計師成長計畫-組合的威力(一)
作者****:李先靜
在《設計模式-可復用物件導向軟體的基礎》的序言裡提到軟體設計的兩個基本原則:
針對介面程式設計,而不是針對實現程式設計。介面是抽象的,因為抽象所以簡單。介面是物件的本質,因為是本質所以穩定。介面是降低複雜度和隔離變化的有力武 器,c語言裡沒有介面的概念,不是因為介面不重要,而是c語言把它視為理所當然的東西(函式指標無所不在), 正所謂玫瑰不叫玫瑰,依然芳香如故。在前面我們已經看到,c語言裡的介面是相當直觀和優雅的。
優先使用組合,而不是類繼承。與組合相比,繼承更為複雜,特別是多重繼承和多層繼承,甚至會帶來一些歧義,給理解上造成困難。與組合相比,繼承缺乏 靈活性,繼承在編譯時就繫結了父類和子類之間的關係,而組合卻可以在執行時動態改變。c語言沒有繼承的概念(當然可以實現繼承),自然大量使用組合來構建 大型系統,這在客觀上恰恰與設計原則是一致的。
本章節將借助佇列,棧和哈表來練習這種基本的重用方法。請讀者實現佇列,棧和哈表,要求重用前面的鍊錶實現。
系統程式設計師成長計畫 組合的威力(一)
在 設計模式 可復用物件導向軟體的基礎 的序言裡提到軟體設計的兩個基本原則 針對介面程式設計,而不是針對實現程式設計。介面是抽象的,因為抽象所以簡單。介面是物件的本質,因為是本質所以穩定。介面是降低複雜度和隔離變化的有力武 器,c語言裡沒有介面的概念,不是因為介面不重要,而是c語言把它視為理所當然的...
系統程式設計師成長計畫005
1.這個變成大寫的函式,就不需要用函式指標來給foreach做引數了。因為他沒有什麼其他變種,不像print那樣,既要print int又要print str。函式指標,或者說 函式,別瞎用!2.書裡的寫法 dlist foreach dlist,str toupper,null 看來還是堅持了 函...
系統程式設計師成長計畫 併發 五
文章出處 作者 李先靜 無鎖 lock free 資料結構 多執行緒併發執行時,雖然有共享資料,如果所有執行緒只是讀取共享資料而不修改它,也是不用加鎖的,比如 段就是共享的 資料 每個執行緒都會讀取,但是不用加鎖。排除所有這些情況,多執行緒之間有共享資料,有的執行緒要修改這些共享資料,有的執行緒要讀...