策略模式,就像是主公手下的眾多謀士,每個人有每個人的想法,那主公採納誰的得呢,主公想呀: 「我且看戰局的變化,隨著戰局的變化誰的謀略適合戰局,就用誰的」。(個人理解)
主要解決:在有多種演算法相似的情況下,使用 if…else 所帶來的複雜和難以維護
優點:
演算法可以自由切換。
避免使用多重條件判斷。
擴充套件性良好。
缺點:
策略類會增多。
所有策略類都需要對外暴露。
使用場景:
如果在乙個系統裡面有許多類,它們之間的區別僅在於它們的行為,那麼使用策略模式可以動態地讓乙個物件在許多行為中選擇一種行為。
乙個系統需要動態地在幾種演算法中選擇一種。
如果乙個物件有很多的行為,如果不用恰當的模式,這些行為就只好使用多重的條件選擇語句來實現。
注意事項:如果乙個系統的策略多於四個,就需要考慮使用混合模式,解決策略類膨脹的問題。
在**的世界裡,我們就是主公,我們用到那個策略,那就new乙個,對吧。那到底**怎麼寫呢?
第一步:攻城略地不止有策略,還有軍士,器械,糧草等;既然策略是一方面,我們就得來乙個策略介面,每個謀士都得實現這個介面的實現類;
public inte***ce strategy
第二步:謀士實現介面,提出具體的策略
public class advisera implements strategy
}
public class adviserb implements strategy
}
public class adviserc implements strategy
}
第三步:根據戰局的變化修改需要的策略
public class context
public string executestrategy()
}
第四步 :測試
public class strategypatterntest
}
結果 :
advisera的策略: 草船借箭
adviserb的策略: 火燒連營
adviserc的策略: 空城計
java 設計模式 策略模式
就是比較兩個類別時,要自己寫乙個比較器,這個比較器實現了 comparator介面,裡面實現public int compare object o1,object o2 方法。在實體類裡面要有乙個成員變數時這個比較器,這個實體類也要實現了 comparable介面。例如 cat有兩個屬性,heigh...
java設計模式 策略模式
策略模式 strategy pattern 體現了兩個非常基本的物件導向設計的原則 1 封裝變化的概念 2 程式設計中使用介面,而不是對介面的實現。策略模式定義了乙個共同的抽象演算法介面,其子類實現這個介面定義的方法,並且都有各自不同的實現,這些演算法實現可以在客戶端呼叫它們的時候互不影響的變化。子...
設計模式 java策略模式
相關的資料網上很多,我這裡自己總結一下。策略模式就是為了達到乙個目標,可以有多種方法 即多種策略 採用,為了減少類與類之間的耦合,所以採用如下措施 設定乙個介面,inte ce strategy,裡面有未實現的方法dothings strategya 繼承 strategy,strategyb 也繼...