java设计形式之策略模式(Strategy模式)
java设计模式之策略模式(Strategy模式)
java设计模式之策略模式(Strategy模式)
(2011-07-31 20:24:52)转载标签: 赵云吴国算法策略类锦囊妙计杂谈 分类: JAVA基础
策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。
一句话形容就是:准备一组算法,并将每一个算法封装起来,似的他们可以互换。策略模式似的算法可以独立于使用他的客户而变化。
使用场景:
许多相关的类仅仅是行为有异。“策略”提供了一种多个行为中的一个行为来配置一个类的方法。
需要使用一个算法的不同变体。例如,你可能会定义一些反应不同的空间/时间权衡的算法。当这些变体实现为一个算法的类层时,可以使用策略模式。
算法是用户不应该知道的数据。可使用策略模式以避免暴露复杂的、与算法相关的数据结构。
一个类定义了多种行为,并且这些行为在这个类的操作中以多个条件语句的形式出现。将相关的条件分支一如他们各自的Strategy类中以代替这些条件语句。
结构:
策略模式设计到的三个角色:
环境角色:持有一个Strategy类(策略类)的引用
抽象策略角色:策略类,通常由一个借口或者抽象类实现
具体策略角色:包装了相关的算法和行为
通俗例子:
三国演义中,赵云保护刘备去吴国迎娶美女,诸葛亮给赵云三条锦囊妙计:走乔国老的后门,求孙国太放任,请孙夫人退兵。
赵云-->按计行事
环境角色:赵云-->由他来决定选择策略
抽象策略角色:(接口)锦囊妙计-->按计行事(抽象方法)
具体策略角色:三条妙计(单独使用的)
策略模式优点:
提供了管理相关算法的办法
提供了可以替换继承关系的办法
避免使用多重条件转移语句
缺点:
客户端必须知道所有的策略类,并自行决定使用哪一个策略类
造成很多的策略类
java设计模式之策略模式(Strategy模式)
(2011-07-31 20:24:52)转载标签: 赵云吴国算法策略类锦囊妙计杂谈 分类: JAVA基础
策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。
一句话形容就是:准备一组算法,并将每一个算法封装起来,似的他们可以互换。策略模式似的算法可以独立于使用他的客户而变化。
使用场景:
许多相关的类仅仅是行为有异。“策略”提供了一种多个行为中的一个行为来配置一个类的方法。
需要使用一个算法的不同变体。例如,你可能会定义一些反应不同的空间/时间权衡的算法。当这些变体实现为一个算法的类层时,可以使用策略模式。
算法是用户不应该知道的数据。可使用策略模式以避免暴露复杂的、与算法相关的数据结构。
一个类定义了多种行为,并且这些行为在这个类的操作中以多个条件语句的形式出现。将相关的条件分支一如他们各自的Strategy类中以代替这些条件语句。
结构:
策略模式设计到的三个角色:
环境角色:持有一个Strategy类(策略类)的引用
抽象策略角色:策略类,通常由一个借口或者抽象类实现
具体策略角色:包装了相关的算法和行为
通俗例子:
三国演义中,赵云保护刘备去吴国迎娶美女,诸葛亮给赵云三条锦囊妙计:走乔国老的后门,求孙国太放任,请孙夫人退兵。
赵云-->按计行事
环境角色:赵云-->由他来决定选择策略
抽象策略角色:(接口)锦囊妙计-->按计行事(抽象方法)
具体策略角色:三条妙计(单独使用的)
策略模式优点:
提供了管理相关算法的办法
提供了可以替换继承关系的办法
避免使用多重条件转移语句
缺点:
客户端必须知道所有的策略类,并自行决定使用哪一个策略类
造成很多的策略类