核心模組:抽象策略類、具體策略類、環境類
使用場景:動態的選擇演算法,不希望客戶端知道複雜的與演算法相關的資料結構;提高保密性;
優點:符合opc,提供了可變演算法分離成類,而不用在繼續繼承本類來寫
缺點:細小的變化都將導致增加乙個策略類;
注意:與狀態模式區別,狀態模式中,子類要切換狀態操作,這裡不同的策略做同一種工作,狀態模式不同的狀態做不同的工作
/**
* created by tory on 2017/12/29.
* 策略模式,共同的策略基類,各個子策略封裝不同的演算法,達到方便切換演算法的目的
*/public class strategypattern
}//虛擬策略類
abstract class stragegy
//concrete具體策略類
class lowpowerstrategy extends stragegy
}//concrete具體策略類
class lowstoragestrategy extends stragegy
}class lowmemorystrategy extends stragegy
}class gamestrategy extends stragegy
}class normalstrategy extends stragegy
}//context環境類
class strategymanager
public void work()
}
內容列印
hello world!
低電量策略。。。
低電量策略。。。關閉藍芽
低電量策略。。。降低螢幕亮度
低電量策略。。。禁止投螢幕
低電量策略。。。限制cpu速率
低記憶體策略。。。
低記憶體策略。。。提示使用者刪除一些不用的應用
低記憶體策略。。。允許程式崩潰
低記憶體策略。。。開始gc記憶體收集機制
低記憶體策略。。。嘗試殺掉非必須的後台程序和服務
低儲存策略。。。
低儲存策略。。。提示使用者儲存空間不足
低儲存策略。。。限制正在執行應用個數為5
低儲存策略。。。刪除使用者透明的快取
遊戲策略。。。
遊戲策略。。。減少非遊戲程序的網路ping數量
遊戲策略。。。嘗試殺掉非必須的後台程序和服務
遊戲策略。。。cpu開始超頻
遊戲策略。。。隨時電量報警
正常策略。。。
正常策略。。。愛幹啥幹啥
Erlang與OO設計模式strategy模式
以前看過head first design patterns覺得是個不錯的書,學習了一點設計模式,現在弄erlang了,十分想兩者結合對比著看看,不為別的,體會兩者之間的區別跟聯絡,看看世界到底是oo的,還是functional的 d 由於我並沒有什麼真正oo的程式設計經驗,難免錯誤很多,大家批判著...
設計模式 策略設計模式
策略設計模式其實就是多型的使用,父類引用指向子類物件。策略模式的最大特點是使得演算法可以在不影響客戶端的情況下發生變化,從而改變不同的功能。策略模式的缺點其實也很明顯,在於策略模式把每一種具體的策略都封裝成乙個實現類,如果策略有很多的話,很顯然是實現類就會導致過多,顯得臃腫。案列 author de...
設計模式 策略模式
策略模式是一種定義一系列演算法的方法,從概念上來看,所有這些方法完成的都是相同的工作,只是實現不同,他們可以用相同的方式呼叫所有的演算法,減少了演算法類和使用演算法類之間的耦合.優點 策略模式的strategy類層次為context定義了一系列可供重用的演算法和行為,繼承有助於吸取這些演算法中的公共...