本文介绍设计模式中的(Strategy)模式的概念,用法,以及实际应用中怎么样使用Strategy模式进行开发。
Strategy模式的概念与应用场景
概要:- Strategy模式定义一个算法族,并把每一种可能的算法封装成一个类,这些算法可以在应用程序内部被动态替换。策略模式可以降低客户端与算法之间的耦合关系。
- 这些算法具有一个相同的抽象接口,具体的算法通过继承的子类实现。
一个应用程序需要动态切换算法的时候,Strategy模式便变得非常有用。
Strategy模式的应用场景一般是:- 具有多种可能需要实现的算法
- 需要在程序中对算法进行动态切换
Strategy模式UML类图Strategy模式的角色:
Strategy 策略(算法)抽象。
ConcreteStrategy 各种策略(算法)的具体实现。
Context 策略的外部封装类,或者说策略的容器类。根据不同策略执行不同的行为。策略由外部环境决定。
Strategy模式的应用范例
为了帮助理解,我们举例来说明。
我们的程序要实现加密功能。加密有一个加密算法,加密算法有很多种,比如MD5,DES等,我们的程序需要实现这个功能,就是可以让用户选择不同的加密算法进行加密。
这个过程我们可以用Strategy模式来实现。
文件一览:
Client 测试类。
EncryptStrategy 相当于Strategy角色。加密算法的抽象类/接口。
DesStrategy 相当于ConcreteStrategy角色。Des加密算法。
MD5Strategy 相当于ConcreteStrategy角色。MD5加密算法。
EncryptContext 相当于Context角色。
代码:
http://www.cnblogs.com/justinw/archive/2007/02/06/641414.html