频道栏目
首页 > 资讯 > 其他 > 正文

行为型模式之策略模式

18-01-25        来源:[db:作者]  
收藏   我要投稿

策略模式

在策略模式中,可以定义一些独立的类来封装不同的算法,每一个类封装一种具体的算法。每一个封装具体算法的类称为一种策略。 策略模式的主要目的在于将算法的定义与实现分离。 定义:定义一系列算法类,将每一个算法封装起来,并让它们可以互相替换。策略模式让算法独立于使用它的客户而变化,也称为政策模式。策略模式是一种对象行为型模式。

策略模式的结构

策略模式UML结构

策略模式UML结构

Context(环境类):使用算法的角色,维持一个对抽象策略类的引用实例,用于定义所有采用的策略。 Strategy(抽象策略类):为所支持的算法声明了抽象方法,可以是接口也可以是抽象类或具体类。 ConcreteStrategy(具体策略类):实现抽象策略类中声明的算法,运行时,具体策略类将覆盖在环境策略类中定义的抽象策略类,使用一种具体的算法实现某个业务处理。

典型代码框架

abstract class AbstractStrategy {
  public abstract void algorithm();
}

class ConcreteStrategy extends AbstractStrategy {
  public void algorithm() {
    ...
  }
}

class Context {
  private AbstractStrategy strategy;

  public void setStrategy(AbstractStrategy strategy) {
    this.strategy = strategy;
  }

  public void algorithm() {
    strategy.algorithm();
  }
}

// 客户端代码段
...
Context context = new Context();

AbstractStrategy strategy;
strategy = new ConcreteStrategy();
//通过注入的方式出入具体的策略
context.setStrategy(strategy);
context.algorithm();
...

总结

策略模式用于算法的自由切换和扩展。 策略模式提供了对开闭原则的完美支持。 一个系统需要动态地在几种算法中选择一种,那么可以将这些算法封装到一个个的具体算法类中。 
相关TAG标签
上一篇:AMD显卡这下要爆发了
下一篇:Facebook向用户发起调查:你信任怎样新闻机构?
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站