iT邦幫忙

2022 iThome 鐵人賽

DAY 30
1

終於來到第30天,真的是太感動了,沒想到可以完成這一系列設計模式的介紹,最後我們就來回顧一下之前介紹各個模式時的一些要點以及總結。

物件導向原則的總結

在討論設計模式的過程中,我們說到了許多物件導向範型的原則。這些原則可以總結如下:

  • 物件是具有明確定義的責任的事物。
  • 物件對自己負責。
  • 封裝指的是任何形式的隱藏:
    • 資料隱藏
    • 實作隱藏
    • 類別隱藏(在抽象類別或介面後)
    • 設計隱藏
    • 實體化隱藏
  • 使用共通性和可變性分析抽象出行為和資料中的變化。
  • 依介面設計。
  • 將繼承看成一種將變化概念化的方法,而不是建立已有物件的特殊情形。
  • 將變化放入一個類別中,並與該類別中的其他變化解耦。
  • 力求鬆耦合。
  • 力求強內聚。
  • 將使用一個物件的程式碼與建立該物件的程式碼分離。

設計模式如何封裝實作

在前面介紹的設計模式中有幾個都具備如此的特點 - 「對客戶物件隔離了實作細節」。例如在 Bridge 模式對客戶物件隱藏了如何實作 Abstraction的衍生類別的細節。此外,Implemention介面也對 Abstraction及其衍生類別隱藏了實作。在大多數模式都是如此,它們提供了隱藏具體實作的各種方式。

隱藏實作的價值在於,模式使開發人員能夠容易地增加新的實作,因為客戶物件不知道目前實作的具體工作細節。

實踐註記

要從這一系列文章完全學會設計模式是不可能的。必須編寫程式碼,在設計中使用它們。在學習模式的過程中,尋找以下約束因素和概念會有所幫助:

  • 這個模式隱藏了什麼實作?如此我們就可以修改它。
  • 這個模式中有什麼共通性?這有助於你找到共通性。
  • 這個模式中物件的責任是什麼?這可以更容易地依責任進行分解。
  • 這些物件之間有什麼關係?這將提供這些物件的約束因素的資訊。
  • 這個模式本身怎樣成為從背景設計的微觀範例?這使我們能夠更加理解為什麼這個模式是優秀設計。

三十天的總結

在我們這30天的設計模式的旅程裡,總共介紹22種的模式,當然還有一些模式沒介紹到,例如:Command、Interpreter、Visitor…等等的模式,但其實基本上都是慣用上面列述的方法去實現的。

最後想說的是,我們可以套用模式來幫助我們提升寫程式時的設計架構,但當回顧這一系列的文章,會發現其實我們遵循的原則都差不多。最重要的是,要如何提升對於『真實的感悟力』,清楚了解現在真實所需要的是什麼,那麼不管要如何使用設計模式,或者多種模式的搭配,亦或是自己打造出一個全新的模式,這些都是對於自身價值的提升,也是作為工程師所需要具備的。

最後感謝大家的觀看,如果有任何問題都能夠提出來,我會虛心受教的~~


上一篇
【DAY29】State模式 - 升級成黃金會員的最後一哩路
系列文
勇闖秘境!探索物件導向背後的設計模式30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言