策略模式
来源:互联网 发布:单片机应用系统设计 编辑:程序博客网 时间:2024/05/29 06:58
策略模式:它定义了一系列的算法,并对其进行了封装,算法之间可以相互替换,这种替换对客户端是透明的。
作用: 解耦了客户端和具体算法,用StrategyContext封装了算法的构造,选择,执行,变换,使得客户端与算法完全解耦
StrategyContext类很像简单工厂里面的工厂类,根据条件判断应该返回什么实例,但是区别在于工厂类的职责只在构造对象并返回,
但StrategyContext不同,他可以封装其他逻辑,如它不仅仅返回算法对象,他应该调用算法对象直接返回客户端所需的结果,所以,
使用简单工厂模式,客户端必须使用一个所有算法的父类来引用工厂类返回的对象,这就造成了客户端不仅和工厂类耦合,还和算法的
父类耦合,而策略模式中,客户端给出数据,StrategyContext返回结果,与客户端耦合的类就只有StrategyContext了;
另外简单工厂模式只返回算法对象,客户端还必须自己调用算法对象的相应方法实现计算,而在策略模式中,计算全部转移到
StrategyContext类中,就减轻了客户端的职责
比较常见的是array.sort(comparator),其中array相当于Context,而传进来的comparator就是具体的排序算法。
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- Ext 3 - Dwr 数据交互 DWRTreeLoader
- Functor 仿函数
- war和jar文件
- Sql清除日志文件
- 把war包部署到was上,出现错: sun.io.MalformedInputException
- 策略模式
- CodeIgniter Dojo Helper
- Farsight10.10应用技巧
- 【转自】深入浅出URL编码
- Collections.rotate()源码
- 40 位改变了互联网的人(下)哦
- .net中IDBDataAdapter和IDataAdapter有什么区别
- 如何用虚拟机装ghost xp,(图文并茂!)-----------2
- 回发或回调参数无效。在配置中使用 或在页面中使用 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterF