1. 程式人生 > >Head First 設計模式之策略設計模式

Head First 設計模式之策略設計模式

假設有一個鴨子超類,各種不同的鴨子要具有叫和游泳得動作。如果我們把鴨子的叫和游泳的動作放入進鴨子超類中,這樣鴨子子類就可以繼承過來這些方法,如果有一天有一隻鴨子變異會飛了。那麼這個鴨子就要自己去實現這個飛行的方法因為超類中沒有該方法,慢慢的隨著時間的推移,有很多鴨子都會飛了。那麼問題來了,我們需要書寫很多硬式程式碼。

這時候就引申出策略設計模式 針對上面的問題我們要怎麼解決呢。我們可以把鴨子的動作行為單拿出來,封裝成一個演算法類。獨立於超類之外的。

在這裡插入圖片描述

設計原則:多組合少繼承

在這裡鴨子的行為不是繼承超類得到的,而是和適當的行為物件組合而來的。

什麼是策略設計模式(Strategy Pattern)

策略模式定義了演算法族,分別封裝起來,讓它們之間可以互相替換,此模式讓演算法的變化獨立於使用演算法的客戶。

優點:     1、可以動態的改變物件的行為 缺點:     1、客戶端必須知道所有的策略類,並自行決定使用哪一個策略類     2、策略模式將造成產生很多策略類