定義:
策略模式定義了一系列的算法环鲤,并將每一個算法封裝起來撞叽,而且使他們可以相互替換(繼承同一個基類)咳燕。策略模式讓算法獨(dú)立于使用它的客戶而獨(dú)立變化季蚂。
使用場景:
1.針對同一類型問題的多種處理方式茫船,僅僅是具體行為有差別時。
2.需要安全地封裝多種同一類型的操作時扭屁。
3.出現(xiàn)同一抽象類有多個子類算谈,而又需要使用if-else或者switch-case來選擇具體子類時。
eg:
假設(shè)我們計(jì)算北京公共出行價(jià)格料滥,從昌平沙河地鐵站到東直門共25公里然眼。計(jì)算公交,地鐵葵腹,出租的價(jià)格高每。如果是普通的計(jì)算的話屿岂,可能寫在一個方法里,通過if-else來分別計(jì)算不同的公共出行方式價(jià)格鲸匿。策略模式則是將每個出行方式抽象出一個基類雁社,然后封裝在一個獨(dú)立的類中,通過傳遞不同的實(shí)現(xiàn)類來解耦晒骇。
定義一個抽象的價(jià)格計(jì)算接口:
公交車計(jì)算策略:
地鐵計(jì)算策略:
具體計(jì)算類:
client:
如果想加入出租的計(jì)算策略,則如下: