设计模式: 真正理解策略模式(Strategy)

基本概念

算法:计算机处理问题的方法,
策略:策略即算法实现对象中行为的方式

Strategy模式的应用场景一般是:
- 具有多种可能需要实现的算法
- 需要在程序中对算法进行动态切换
-对象的行为需要根据上下文动态的改变。可以考虑使用策略模式.

如:加密有一个加密算法,加密算法有很多种,比如MD5,DES等,我们的程序需要实现

这个功能,就是可以让用户选择不同的加密算法进行加密。

官方定义:Strategy模式定义一个算法族,并把每一种可能的算法封装成一个类,这些算法可以在应用程序内部被动态替换。此模式让算法的变法不会影响到使用算法的客户。

解析策略模式

当对象的某个行为有多种实现方式时,为了把所有这些实现方式的变化对现有系统的影

响降到最低。当有新的需求时可以对扩展开发对修改关闭。可以把该行为抽象为一个接

口或抽象类,然后由它的子类来完成不同方式的实现。而使用该行为的对象,通过引用

该超类型的变量,来把对它的请求委托给该行为的抽象来完成。由于实际完成该功能

的对象是一个超类型所以他们运行时引用的对象可以为任何它的子类型。即通过这种多

态的机制可以在运行时动态指定执行所需要的实现方式也可以说成实现是策略.策略模式可以降低客户端与算法之间的耦合关系。

策略模式要点:

Strategy模式重在外部对策略(算法)的选择,策略的选择由外部条件决定,也就是说算法的动态的切换。
Strategy模式中只有具有继承关系的算法类
Strategy模式从类的角度,对整个算法加以封装

posted @ 2009-01-17 10:12  rentj  阅读(392)  评论(0编辑  收藏  举报