假設有一個鴨子超類,各種不同的鴨子要具有叫和遊泳得動作。如果我們把鴨子的叫和遊泳的動作放入進鴨子超類中,這樣鴨子子類就可以繼承過來這些方法,如果有一天有一隻鴨子變異會飛了。那麼這個鴨子就要自己去實作這個飛行的方法因為超類中沒有該方法,慢慢的随着時間的推移,有很多鴨子都會飛了。那麼問題來了,我們需要書寫很多硬式代碼。
這時候就引申出政策設計模式
針對上面的問題我們要怎麼解決呢。我們可以把鴨子的動作行為單拿出來,封裝成一個算法類。獨立于超類之外的。
設計原則:多組合少繼承
在這裡鴨子的行為不是繼承超類得到的,而是和适當的行為對象組合而來的。
什麼是政策設計模式(Strategy Pattern)
政策模式定義了算法族,分别封裝起來,讓它們之間可以互相替換,此模式讓算法的變化獨立于使用算法的客戶。
優點:
1、可以動态的改變對象的行為
缺點:
1、用戶端必須知道所有的政策類,并自行決定使用哪一個政策類
2、政策模式将造成産生很多政策類