来自 xiaoclient http://www.blogjava.net/xiaosilent/archive/2006/11/05/79258.html
策略模式就是定义一组算法,所有的这些算法都是做同一件事情,只是他们实现的方式不同。
给大家讲了一个销售税算法的例子。在一个国际性的电子商务系统里,对不同国家的客户可能会存在不同的销售税算法。策略模式使得我们可以封装这些算法到一个抽象类中,并从这个抽象类派生出一系列的具体类来完成不同国家的具体算法。
通过从抽象类派生出不同算法的方式,程序的主模块
(
如上例中的
SalesOrder)
不必考虑确切算法类型,这样就允许新变化的出现,随后在
16
章,我们继续讲如何处理这些变化。
策略模式主要功能
|
目标
|
使我们可以根据不同客户端对象采用不同算法
|
环境
|
具体算法的选择取决于具体的客户对象的类型
|
解决方式
|
把算法的选择和算法的实现分离开来,再根据客户对象进行选择
|
参与方式
|
|
结果
|
|
执行方式
|
让使用到算法的类
(Context)
包含一个包含了如何调用具体算法的抽象方法的抽象类
(Strategy)
。每个派生类根据需要实现具体算法。
|
图
9-6
策略模式通用结构
|