
參與者
Strategy
- -- 定義所有支持的算法的公共接口。Context使用這個(gè)接口來(lái)調(diào)用某ConcreteStrategy定義的算法。
- -- 以Strategy接口實(shí)現(xiàn)英雄模范具體算法。
- --用一個(gè)ConcreteStrategy對(duì)象來(lái)配置。
- --維護(hù)一個(gè)對(duì)Strategy對(duì)象的引用。
- --可定義一個(gè)接口來(lái)讓Strategy訪問(wèn)它的數(shù)據(jù)。
適用性
- 當(dāng)存在以下情況時(shí)使用Strategy模式
- 許多相關(guān)的類僅僅是行為有異。“策略”提供了一種用多個(gè)行為中的一個(gè)行為來(lái)配置一個(gè)類的方法。
- 需要使用一個(gè)算法的不同變體。
- 算法使用了客戶不應(yīng)該知道的數(shù)據(jù)。可使用策略模式以避免暴露復(fù)雜的、與算法相關(guān)的數(shù)據(jù)結(jié)構(gòu)。