策略模式之我見

---------------------- android培訓java培訓、期待與您交流! ----------------------    談論該模式之前我想先說說自己對類的理解:類是一個抽象體,他封裝了一大類個體的共同屬性和行爲,類的建立是以抽象爲基礎的,而抽象是建立在個體的屬性和行爲之上的,先有了個體然後纔有了以多個個體爲基礎抽象出來的類。
   策略模式:它定義了一個算法家族,將各個算法封裝起來,讓他們之間可以相互替換,此模式讓算法的變化不會影響到客戶端。(該定義引自《大話設計模式》)
   我對該模式的定義理解如下:所謂算法是指爲達到一定的目的而採取的做事方法,爲做成一件事情不同的人採取的算法(策略或方法)不同,但他們最終實現的結果是相同的,對於利用這些結果的客戶來說那些不同的算法是可忽略的,定義中的”算法家族”其實就是一個建立在不同算法之上的類,它是算法的抽象。策略模式的具體做法是第一步抽象出一個算法類,它包含了爲完成一件事情的所有算法的共同屬性和行爲,第二步利用繼承的特性產生出各種不同的算法子類,第三步利用多態的特性產生一個與客戶端直接打交道的類,第四步利用第三步產生的類直接在客戶端進行邏輯判斷對具體算法進行選擇(可以結合使用簡單工廠模式將客戶端的邏輯判斷移除,這樣做更合理些)。當對具體的算法進行修改或增加時只需要修改或增加子類算法即可而客戶端代碼可以不需改動(這也是爲什麼定義中說“讓算法的變化不會影響到客戶端”的原因)。
    從上面的理解來看策略模式是建立在繼承和多態的基礎上的,他的好處就是封裝了各種不同算法(即變化部分)降低了算法類和使用算法類之間的耦合度,同時有助於單元測試的簡化。
   在具體應用中只要聽到在不同的時間需要不同的業務規則就可以利用該模式處理變化。---------------------- android培訓java培訓、期待與您交流! ----------------------
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章