策略模式:定義了算法族(將一組行為想象成一族算法),分別封裝起來,讓它們之間可以互相替換,此模式讓算法的變化獨立于使用算法的客戶。
策略模式是對算法的包裝,是把使用算法的責任和算法本身分割開來,委派給不同的額對象管理。策略模式通常把一系列的算法包裝到一系列的策略類里面,作為一個抽象策略類的子類。也就是說,準備一組算法并將每一個算法封裝起來,使得它們可以互相互換。看下面的結構框圖:

我們由框圖得到三個角色: (1)環境角色(context):持有一個Strategy的引用; (2)抽象策略模式(Strategy)角色:這是一個抽象角色,通常由一個接口或抽象類實現。此角色給出所有的具體策略類所需的接口。 (3)具體策略角色(ConcreteStrategy):包裝了相關的算法或行為。
從上面的實例中,策略模式僅僅是封裝算法,提供新的算法插入到已有的系統中,以及以前的算法從系統中淘汰的方法,策略模式并不決定何時使用某種算法,在什么情況下使用算法是由客戶端決定的。
(1)策略模式保證了各個策略算法的平等性,對于一系列的具體實現,大家的地位是平等的,實現各個具體算法實現之間的相互切換,而它們彼此之間是沒有依賴的可以理解為是相同行為的不同實現; (2)運行期間,策略模式在同一個時刻只能使用一個具體的策略實現; (3)所有的具體策略類都有一些公有的行為。此時就應該把這些公有的行為放到共同的抽象策略角色Strategy中。
文章只是作為自己的學習筆記,借鑒了網上的許多案例,如果覺得闊以的話,希望多交流,在此謝過…
新聞熱點
疑難解答