java常用设计模式十一:策略模式

一、概述

定义:策略模式是指对一系列的算法定义,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。(概念不好理解,可以看第二节的合例子)

基本角色:

  • 环境(Context)角色:持有一个Strategy的引用,并执行策略的方法。
  • 抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。
  • 具体策略(ConcreteStrategy)角色:包装了相关的算法或行为

二、示例

举个实际场景:一个老板(Client)要从家里去公司,让司机(Context)来开车(Strategy),可以选择线路A开车(ConcreteStrategyA),也可以选择线路B开车(ConcreteStrategyB)

1)抽象策略

public interface Strategy {
void drive();
}

2)具体策略类

public class ConcreteStrategyA implements Strategy {
public void drive() {
System.out.println("从线路A开车");
}
}
public class ConcreteStrategyB implements Strategy {
public void drive() {
System.out.println("从线路B开车");
}
}

3)环境类(司机,听从老板的下发的路线执行开车)

public class Context {
private Strategy strategy;
public Context(Strategy strategy){
this.strategy = strategy;
}
public void doDrive(){
strategy.drive();
}
}

4)客户端(老板:向司机下发开车的路线)

public class Client {
public static void main(String[] args){
Context context;
context = new Context(new ConcreteStrategyA());
context.doDrive();
context = new Context(new ConcreteStrategyB());
context.doDrive();
}
}
从线路A开车
从线路B开车
上一篇:结构体struts的长度


下一篇:Herriot