定義:定義了算法族,分別封裝起來(lái),讓他們之間可以相互交換,此模擬算法的變化獨(dú)立于使用算法的客戶。
設(shè)計(jì)原則:
1、多用組合,少用繼承;
2、針對(duì)接口編程,而不是針對(duì)實(shí)現(xiàn)編程;
實(shí)現(xiàn):

Context(應(yīng)用場(chǎng)景):
參考資料:《Head First設(shè)計(jì)模式》
《鴨子-策略模式(Strategy)》
設(shè)計(jì)原則:
1、多用組合,少用繼承;
2、針對(duì)接口編程,而不是針對(duì)實(shí)現(xiàn)編程;
實(shí)現(xiàn):

Context(應(yīng)用場(chǎng)景):
l 需要使用ConcreteStrategy提供的算法。
l 內(nèi)部維護(hù)一個(gè)Strategy的實(shí)例。
l 負(fù)責(zé)動(dòng)態(tài)設(shè)置運(yùn)行時(shí)Strategy具體的實(shí)現(xiàn)算法。
l 負(fù)責(zé)跟Strategy之間的交互和數(shù)據(jù)傳遞。
Strategy(抽象策略類):
l 定義了一個(gè)公共接口,各種不同的算法以不同的方式實(shí)現(xiàn)這個(gè)接口,Context使用這個(gè)接口調(diào)用不同的算法,一般使用接口或抽象類實(shí)現(xiàn)。
ConcreteStrategy(具體策略類):
l 實(shí)現(xiàn)了Strategy定義的接口,提供具體的算法實(shí)現(xiàn)。
參考資料:《Head First設(shè)計(jì)模式》
《鴨子-策略模式(Strategy)》