Strategy模式

Posted on 2007-11-21 15:35 game of programming 阅读(423) 评论(1)  编辑  收藏 所属分类: Design Pattern

《设计模式》中是这样描述Strategy模式的:定义一系列算法,把它们一个个封装起来,并且使它们可相互替换。Strategy模式使算法可以独立于使用它的客户的变化。
Strategy模式的UML图如下所示:

从上图可以看出,具体的算法隐藏在AbstractStrategy类背后,Client无需知道具体算法如何实现,它只需传给Context相关参数即可。在Context中来实现具体算法的选择(通过Client传来的参数)。而算法的具体实现则通过ConcreteStrategy来完成。
这样做有以下几个好处:
1 算法的选择与实现相分离。符合“找出变化并封装之”的原则。如果需要修改或者添加新的算法,只需要修改相对应的ConcreteStrategy或者增加新的ConcreteStrategy并且修改算法的选择即可。
2 Client无需关心算法如何选择和具体实现,只需关心结果。

Feedback

# 太难懂了  回复  更多评论   

2009-01-08 21:21 by 太难懂了
太难懂了

只有注册用户登录后才能发表评论。


网站导航:
 

posts - 2, comments - 1, trackbacks - 0, articles - 5

Copyright © game of programming