????????開發(fā)過程中老充,有時實現(xiàn)的某一個功能在不同條件下有不同的處理邏輯列粪,需要運用不同的算法,此時可以使用策略模式酒来。
????????在策略模式中卢未,我們可以定義一些獨立的類來封裝不同的算法,每一個類封裝一種具體的算法堰汉,稱之為一種策略辽社,為了保證這些策略在使用時具有一致性,一般會提供一個抽象的策略類來做規(guī)則的定義翘鸭,而每種算法則對應于一個具體策略類滴铅。
? ???????策略模式的主要目的是將算法的定義與使用分開,將算法的定義放在專門的策略類中就乓,每一個策略類封裝了一種實現(xiàn)算法汉匙,使用算法的環(huán)境類針對抽象策略類進行編程。
策略模式(Strategy Pattern):定義一系列算法類生蚁,將每一個算法封裝起來盹兢,并讓它們可以相互替換,策略模式讓算法獨立于使用它的客戶而變化守伸。
context為環(huán)境類绎秒,即使用策略算法的客戶端類,它與抽象策略類之間建立一個關(guān)聯(lián)關(guān)系尼摹。
總結(jié)
策略模式用于算法的自由切換和擴展见芹,對應于解決某一問題的一個算法族,允許用戶從該算法族中任選一個算法來解決某一問題蠢涝,同時可以方便地更換算法或者增加新的算法玄呛。只要涉及到算法的封裝、復用和切換都可以考慮使用策略模式和二。
個人覺得策略模式是一種簡化版的狀態(tài)模式徘铝,環(huán)境類運用不同的策略子類產(chǎn)生不同的算法,與環(huán)境類在不同狀態(tài)子類下算法不同是一樣的惯吕,只是策略模式中環(huán)境類沒有狀態(tài)轉(zhuǎn)換邏輯惕它。