iT邦幫忙

2022 iThome 鐵人賽

DAY 2
0
自我挑戰組

設計模式探索系列 第 2

[Day 2] 前置準備─ OO與UML

  • 分享至 

  • xImage
  •  

前言

萬事起頭難,這兩天就先從最初的設計模式入門開始,開始感受設計模式的用處,並掌握設計模式的幾項大原則吧!

物件導向

Design Pattern充分使用OO特性,因此建議先回憶一下OO物件導向的核心概念(文字參考自C++ Primer):

  • 抽象:仰賴介面實作之間的區別,資料抽象化讓程式設計師可以忽略型別表示的細節,專注於介面設計,思考該型別所能進行的運算。
  • 封裝:強加類別的介面與實作之間的區別,被封裝的類別會隱藏實作,類別的使用者可以使用介面,但無法取用實作,帶來兩種好處:
    1. 使用者程式碼不會不小心毀損封裝的物件
    2. 經過封裝的類別實作可以獨立修改,不影響使用者的程式碼運作
  • 多型:指的是依據一個參考或指標的動態型別獲取型別專用行為的能力。我們稱彼此有繼承關係的型別是多型的型別,因為我們可以使用這些型別的「許多型式」同時忽略他們之間的差異。白話來說,我們可以在不用知道那個物件的實際型別是什麼的情形下來使用它,而它會依據型別做出對應的動作。
  • 繼承:有一個基礎類別(base class),其他的類別直接或間接繼承它稱為衍生類別(derived class),基礎類別定義型別共通的成員,而衍生類別定義專屬衍生類別本身的成員;繼承讓我們可以定義出類別作為模型,來捕捉相似形別之間的關係。

UML

本書是由JAVA程式碼為範例,並以簡單的UML類別圖來說明物件之間的關係。UML不是很熟沒關係,基本上本書最常見的就三種關係,先認得這三個就可以了。

  1. 繼承(Inherit/ Extend)https://ithelp.ithome.com.tw/upload/images/20220913/20140096n92EA8Qv3M.png
  2. 實作(Implement)https://ithelp.ithome.com.tw/upload/images/20220913/20140096IMywhoU65I.png
  3. 關聯(HAS-A)https://ithelp.ithome.com.tw/upload/images/20220913/20140096NRiNJ4MVRr.png

To be continued...

回憶完以上基本概念,就可以結合本書介紹的第一種模式─策略模式了,基本上,就是善用以上OO的四個概念來加以延伸。


上一篇
[Day 1] 深入淺出設計模式- 前言
下一篇
[Day 3] 策略模式 (1)
系列文
設計模式探索30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言