第476天 開始學習伽馬的《設計模式》

2021-07-05 02:16:38 字數 1108 閱讀 6984

這是一本關於設計模式的書,它描述了在物件導向軟體設計過程中針對特定問題的簡介而優雅的解決方案。

這不是一本讀完一遍就可以束之高閣的書。我們希望你在軟體設計過程中反覆參閱此書,以獲取設計靈感。

學習這些模式,將有助於讀者設計出優秀的物件導向設計。

每乙個模式描述了乙個在我們周圍不斷重**生的問題以及該問題的解決方案的核心。

動態繫結是指傳送的請求直到執行時刻才受你的具體的實現的約束。

第乙個原則:對介面程式設計,而不是對實現程式設計。

不將變數宣告為某個特定的具體類的實現物件,而是讓它遵從抽象類所定義的介面。建立型模式確保你的系統是採用針對介面的方式書寫的,而不是針對實現的書寫的。

第二個原則:優先使用物件組合,而不是類繼承。

然後,我們的經驗表明:設計者往往過度使用了繼承這種復用技術。但一來於物件組合技術的設計卻歐根號的復用性(或更簡單)。你將會看到設計模式中一再使用物件組合技術。

類繼承和組合的比較

類繼承(白箱復用):是乙個通過復用父類功能而擴充套件應用功能的基本機制。「白箱」是相對可視性而言,在繼承方式中,父類的內部細節對子類可見。

物件組合(黑箱復用):多個物件通過組裝或組合來實現新的更複雜的功能。「黑箱」是相對可視性而言,物件的內部細節是不可見的。

優缺點比較

優缺點類繼承

物件組合 

優點在編譯時靜態定義,可以直接使用。

不破壞封裝性,對於類的依耐性較少

缺點由於在編譯時刻就定義了,無法在執行時改變從父類繼承的實現。

子類可以覆蓋父類的實現細節,破破壞了封裝性。依賴過於緊密,不夠靈活。

父類的復用係數不高

委託

委託(delegation)是一種組合方法,它使組合具有與繼承同樣的復用能力。在委託方式下,有兩個物件參與處理乙個請求,接受請求的物件將操作委託給它的**者(delegate)。這類似與子類將請求交給它的父類處理。

今天看到了第24頁,明天繼續!

第477天 繼續學習伽馬的《設計模式》

緊耦合的類相互依賴性很高,很難被復用。由這樣的類組合成的系統是乙個很難學習 移植和維護的密集體。松耦合的類減少了類之間的相互依賴,更容易被復用。同時,由松耦合類構建的系統更易於學習 移植 修改和擴充套件。設計模式使用抽象耦合和分層技術來提高系統的鬆散耦合性。怎樣選擇設計模式 怎樣使用設計模式 大致瀏...

某人專用教程(第4天) 開始布局

今天就正式開始寫 了。額。hello world不用講了吧?我們直接開始寫一些布局。第乙個是單欄布局。也就是只有一行的布局。這種布局一般有2種情況。一種是定寬度的。比如寬為800px,另一種是100 寬度的俗稱自適應瀏覽器寬度。不管哪種形式,單欄布局,就是相當於把所有內容放在乙個容器內。一般,這種純...

堅持 第48天 30天開始看Web基礎了

2016 9 25 完成了 1 看了30天 2 看了專套本 3 9 18看到了3 39 00。在觸控的開發教訓 注意拖拽 注意on load 裡面的 注意pipes 和 pipe 注意pipe 和 piepe 注意for迴圈裡面可用break ps裡的神器delete,複製刪除圖層 if this....