iT邦幫忙

2023 iThome 鐵人賽

DAY 16
0

目前為止書中提過的設計原則

有鑒於本人的金魚腦,讀到現在已經快要忘記書中提過的設計原則,所以來幫自己恢復一下記憶~

  1. Encapsulate what varies:

    • 第一章的範例中的
      Duck() 可以飛或叫,但每種鴨子叫聲都不同,所以把需要變化的部分封裝成QuackBehavior()
      FlyBehavior()介面,再由實體介面去實作例如 FlyWithwings() , FlyNoWay()
  2. Favor composition over inheritance:

    • HAS-A can be better than IS-A
    • 多使用複合而不是繼承
  3. Program to interface, not implementations

    • 第一章的範例中,鴨子的行為不是直接被寫成鴨子類別裡的方法,而是先被定義成介面,增加彈性。
  4. Strive for loosely coupled designs between objects that interact.

    • 觀察者模式中,主題會知道有觀察者訂閱他,但無法確切知道訂閱者的具體類別(concrete class)
    • 另外,因為觀察者跟主題的耦合程度低,一但需要增加新的訂閱者,也不需要去調整主題的程式碼,只需調整觀察者名單的成員增減
  5. Classes should be open for extension but closed for modification

    • 開放封閉原則
    • 在不動到現有類別程式碼的情況下去擴充新的功能
    • 只要用在比較需要變動的程式上,不用需要讓全部的程式都按照這個原則,否則會增加整體設計的複雜度,造成 反效果。
  6. Depend on abstractions. Do not depend on concrete classes.

    • 就是 Dependency Inversion Principle 依賴反轉原則
    • 高階模組不應該依賴於低階模組,兩者都應該依賴抽象。

下一篇就會進到下個章節 The Singleton Pattern →


參考資料:

  1. 《深入淺出設計模式 (Head First Design Patterns) 》
  2. 書中程式碼傳送門
  3. 菜雞與物件導向 (14): 依賴反轉原則

程式碼

https://github.com/changtintin/Design-Pattern/tree/master/Ch2/Java


Disclaimer
因為讀的是原文版,所以難免會有翻譯詞不達意或是專有名詞上的差異,有錯誤的話歡迎在留言區一起交流!


上一篇
[深入淺出設計模式] Ch4 The Factory Pattern (5) - 【抽象工廠模式】Abstract Factory Pattern 與工廠方法模式差在哪裡?
下一篇
[深入淺出設計模式] Ch5 The Singleton Pattern (1) - 【單例模式】
系列文
深入淺出設計模式 (Head First Design Pattern) - 重點整理及範例分享35
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言