策略模式通常是把一系列的算法包裝到一系列的策略類(lèi)里面,作為一個(gè)抽象策略類(lèi)的子類(lèi)。簡(jiǎn)單理解,策略模式就是對(duì)一個(gè)算法的不同實(shí)現(xiàn)。
- 抽象策略角色
interface Handler{
fun handler()
}
- 具體策略角色
class TeacherHandler: Handler{
override fun handler() {
Log.d("tag" ,"上課")
}
}
class DoctorHandler: Handler{
override fun handler() {
Log.d("tag" ,"看病")
}
}
class PoliceHandler: Handler{
override fun handler() {
Log.d("tag" ,"維護(hù)治安")
}
}
- 環(huán)境角色,持有一個(gè)策略Strategy的引用
class Strategy(val handler: Handler){
fun excute(){
handler.handler()
}
}
Note:項(xiàng)目中策略模式通常能替代過(guò)多的if/else代碼塊,增強(qiáng)代碼的可讀性。