設計模式筆記

2021-04-13 06:52:46 字數 1077 閱讀 1296

1.

類繼承與介面繼承的比較。

物件的類與物件的型別的比較:乙個物件的類定義了物件怎麼樣實現的,同時也定義物件內部狀態和操作的實現。但是物件的型別只與他的介面有關,藉口即物件能響應的請求的集合。乙個物件可以有多個型別,不同的類物件可以有相同的型別。

理解類繼承和介面繼承之間的差別也十分重要。類繼承根據乙個物件的實現定義了另乙個物件的實現。簡而言之,它是**和表示的共享機制。然而,介面繼承描述了乙個物件什麼時候能用來替代另乙個物件。 2.

對介面編成而不是實現編成

類繼承是乙個通過復用父類功能的基本機制。允許根據舊物件快速定義新物件。允許你從已存在的類中繼承所需要的絕大部分功能,從而幾乎無需任何代價就可以獲得新的實現。

然而,實現的復用只是成功的一半,繼承所擁有的定義具有相同介面的物件族的能力也是很重要的。因為多型依賴這種能力。

當繼承被適當的使用時,子類僅僅新增或重定義操作,而沒有隱藏父類的操作。這時,所有的子類都能響應抽象類介面中的請求,從而子類的型別都是抽象類的子型別。

只根據抽象類中定義的介面來操作物件好處: 1.

客戶無須知道他們使用物件的特定型別,只須物件有客戶需要的介面。 2.

客戶無須知道他們使用物件是什麼類來實現的,只需知道定義介面的抽象類。

極大的減少了子系統實現之間的依賴關係,也產生了可復用的物件導向設計的原則:針對介面程式設計,而不是針對實現程式設計。

繼承和組合的比較:

繼承缺點:繼承是在編譯的時刻就被定義了,所以無法在執行時刻該百年從父類的實現。

而且父類通常至少定義了部分子類的具體表示。因為繼承對子類解釋了其父類的實現細節,被認為「破壞了封裝性」,子類實現與父類密切聯絡。導致父類中任何變化都回導致自類發生變化。

組合優點:

組合是通過對其對物件的引用而在執行時動態定義的。要求對吸納給遵守彼此的介面約定,而這些介面並不妨礙你將乙個物件和其他物件一起使用。

物件組合優先使用有助於保持每個類的封裝,並集中在單個任務上。類和繼承層次會保持較小規模。另外,基於物件組合的設計有更多的物件(而有較少的類),且系統的行為依賴於物件間的關係而不是被定義在某個類中。

從而匯出物件導向的第二個原則:優先使用物件組合,而不是類繼承。 3.

委託

設計模式筆記

設計模式是一種真理,我們在沒有學習過設計模式時都會或多或少的與他不謀而合,但是學習過後我們可以把他從經驗性的東西提煉為理論性的,並且反過來再指導實踐,這應該就是我們學習並使用設計模式的初衷,這好比是政經中的價值規律,任何人都知道東西如果少了而需求大,它 馬上就漲,而反過來 就賤,可是學過政經後就可以...

設計模式筆記

設計模式精解p136,第11章 專家如何進行設計 alexander提到 從片段開始設計不是乙個好的設計方法。即將預先成型的部分新增在一起是無法得到優秀的軟體設計的。但還是可以得到可以工作的軟體的,只是大部分時候難於修改或擴充套件 我的觀點 軟體或者軟體系統都是由 功能模組 和這些 模組之間的聯絡 ...

設計模式筆記

黎克特制替換原則 父類能出現的地方,子類也能出現 子類盡量避免 個性 一旦把子類當作父類使用時子類的 個性 被抹殺掉 避免紛爭,規則壓制 子類繼承父類,如果子類要過載父類的方法,該方法的引數型別範圍要大於等於父類,返回引數要小於父類的返回型別 這樣避免混淆 依賴倒轉原則 1 建構函式傳遞依賴物件 p...