前言
萬事起頭難,這兩天就先從最初的設計模式入門開始,開始感受設計模式的用處,並掌握設計模式的幾項大原則吧!
物件導向
Design Pattern充分使用OO特性,因此建議先回憶一下OO物件導向的核心概念(文字參考自C++ Primer):
-
抽象:仰賴介面與實作之間的區別,資料抽象化讓程式設計師可以忽略型別表示的細節,專注於介面設計,思考該型別所能進行的運算。
-
封裝:強加類別的介面與實作之間的區別,被封裝的類別會隱藏實作,類別的使用者可以使用介面,但無法取用實作,帶來兩種好處:
- 使用者程式碼不會不小心毀損封裝的物件
- 經過封裝的類別實作可以獨立修改,不影響使用者的程式碼運作
-
多型:指的是依據一個參考或指標的動態型別獲取型別專用行為的能力。我們稱彼此有繼承關係的型別是多型的型別,因為我們可以使用這些型別的「許多型式」同時忽略他們之間的差異。白話來說,我們可以在不用知道那個物件的實際型別是什麼的情形下來使用它,而它會依據型別做出對應的動作。
-
繼承:有一個基礎類別(base class),其他的類別直接或間接繼承它稱為衍生類別(derived class),基礎類別定義型別共通的成員,而衍生類別定義專屬衍生類別本身的成員;繼承讓我們可以定義出類別作為模型,來捕捉相似形別之間的關係。
UML
本書是由JAVA程式碼為範例,並以簡單的UML類別圖來說明物件之間的關係。UML不是很熟沒關係,基本上本書最常見的就三種關係,先認得這三個就可以了。
-
繼承(Inherit/ Extend)
-
實作(Implement)
-
關聯(HAS-A)
To be continued...
回憶完以上基本概念,就可以結合本書介紹的第一種模式─策略模式了,基本上,就是善用以上OO的四個概念來加以延伸。