图 1‑4 策略模式的优势在于算法和环境的分离,两者可以独立演化
由此可见,策略模式适用于以下情形:
· 当许多相关的类之间的差异只在于其行为时。策略模式可以动态地让一个对象在许多行为中选择一种行为。
· 当实现一个目的有多种可选算法时,比如:你出于不同的利弊权衡考虑定义的那些算法(即相当于应用不同的策略)。这些具体的算法可以封装成抽象算法类的派生类,并享用该抽象算法类的统一接口。通过多态性,客户端只要持有一个抽象算法类的对象,就可以选用任何一个具体的算法。
· 当一个算法使用的数据不可以让客户端得知时。使用策略模式可以避免暴露复杂的与算法相关的数据结构。其实客户端也没有必要知道这些与算法相关的知识和数据。
· 当一个类定义有很多行为,且用多个条件语句来判断选择这些行为时。策略模式可以把这些行为转移到对应的具体策略类中,从而避免了难以维护的多重条件选择,体现了面向对象的编程思想。
1.2 结构与用法
策略模式的结构如图 1‑5所示,它包括了以下参与者:
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




