切換
舊版
前往
大廳
主題

Strategy Pattern - 策略模式

默思 | 2016-11-25 19:49:11 | 巴幣 0 | 人氣 259

最近在翻 深入淺出 - 設計模式 這本書,所以就來記錄一下從裡面學到的東西。

這本書簡言之主要是再告訴讀者如何使用物件導向開發程式,讓寫出來的程式在未來不論是修改、擴增功能都可以比較方便,有一個良好的架構,程式的可擴充性和維護性才會提高。

因為我才讀完第一章,所以就寫第一張東西 - Strategy Pattern

Strategy Pattern定義了演算法家族,個別封裝起來,讓個自之間可以互相替換,變換演算法時,不會影響到使用該演算法的程式。<---書裡定義是這樣寫,以下舉個例子:

假設我定義一個Dog的class,裡面的方法有display(自我介紹)、move(行動模式)、makeNoise(發出聲響),今天兩個新類別Young_Dog和Old_Dog去繼承Dog,兩種Dog有不同的move和makeNoise,一般來說我們直接在兩種Dog裡個自撰寫兩種Dog的方法就好,但是若是今天有超多種Dog出現呢?一個個去為它們各自撰寫個自的方法嗎?有些Dog說不定行為上有部分相同呢。

所以我們可以建立兩個Interface,MoveBehavior和MakeNoiseBehavior,由這兩個Interface來管理Dog的行為,比如說,我可以建立一個Run_MoveMode的class去implements MoveBehavior,並在Dog的class中加入MoveBehavior和MakeNoiseBehavior的介面變數moveBehavior和makeNoiseBehavior,之後在衍生類別中賦予想要的行為即可,譬如說想要讓Young_Dog的move是Run_MoveMode,則moveBehavior = (MoveBehavior)new Run_MoveMode();即可。

大致的輸出畫面如下:


詳細程式碼在這邊:Strategy_Pattern_Example

創作回應

更多創作