设计模式常读常新
以前只知道策略模式中存在可替换的strategy类。
其实还应该有一个context类,负责给策略提供需要的参数,提供参数的方式有两种:
[b]1 context计算strategy 所需的参数,并传入[/b]
该方式会遇到扩展性和效率的问题
扩展性:提供的参数不满足新的策略的要求。
效率:在一些情况下context计算的参数根本不为stratey所用,浪费时间。
[b]
2 context传入自己的引用,由strategy自行选择所需的内容[/b]
该方式避免了上面的缺点,但会使strategy依赖context,二者紧密耦合,此时需要细致设计context接口。
以前只知道策略模式中存在可替换的strategy类。
其实还应该有一个context类,负责给策略提供需要的参数,提供参数的方式有两种:
[b]1 context计算strategy 所需的参数,并传入[/b]
该方式会遇到扩展性和效率的问题
扩展性:提供的参数不满足新的策略的要求。
效率:在一些情况下context计算的参数根本不为stratey所用,浪费时间。
[b]
2 context传入自己的引用,由strategy自行选择所需的内容[/b]
该方式避免了上面的缺点,但会使strategy依赖context,二者紧密耦合,此时需要细致设计context接口。
本文深入探讨了策略模式的设计原理,不仅介绍了策略模式中常见的strategy类,还详细解释了context类的作用及其与strategy类交互的两种方式。第一种方式是context预先计算好参数再传递给strategy,这种方式可能带来扩展性和效率问题;第二种方式是context将自身引用传递给strategy,由strategy按需获取参数,这种方式虽然解决了前一种方式的问题,但也可能导致strategy与context之间的耦合过紧。
1313

被折叠的 条评论
为什么被折叠?



