有許多種不同的鴨子:mallardDuck, ModelDuck, RubberDuck..................
問題來了:各種不同的鴨子,有的會飛而有的不會飛,比如塑料模型鴨子ModelDuck就不會飛,還有個問題是不同的鴨子叫聲也不相同,有的叫聲是“呱 呱 叫”,有的是“吱 吱 叫”,或“叫不出聲”。
這裏使用策略設計模式:
策略模式:定義算法族,分別封裝起來,讓他們之間可以互相替換,此模式讓算法的變化獨立於使用算法的客戶。
1:分開變化和不會變化的部分
2:“有一個” 可能比 “是一個” 更好(多用組合,少用繼承)
如你所見,使用組合建立系統具有很大的彈性, 不僅可將算法族封裝成類, 更可以“在運行是動態地改變行爲”, 只要組合的行爲對象符合正確的接口標準即可。