波神

导航

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开车

 

posted on 2019-01-14 13:53  波神  阅读(253)  评论(0编辑  收藏  举报