設計一個Duck父類,其有swim,run方法,全部鴨子都會游泳和run,新添加fly方法,繼承它的子類有的不會飛,若是把fly設計在父類中,讓子類去複寫則代碼在子類中重複,運行時行爲不容易改變,很難知道全部鴨子的行爲,改變會其一發而動全身,顯然不合理。若是將fly設計成一個接口,只有會飛的鴨子才能實現該接口,若是子類數量不少,又犯了代碼沒法複用的毛病,因此考慮用該模式。算法
oo基礎:抽象,封裝,多態,繼承編程
oo原則:封裝變化,多用組合,針對接口編程,不針對實現編程。.net
oo模式:設計
策略模式:定義算法族,分別封裝起來,讓他們能夠互相替換,此模式讓算法的變化獨立於使用算法的客戶。繼承