JAVA 策略模式

文章目录

介绍

策略模式

实现

介绍

描述

策略模式设计模式属于行为型模式,定义了一系列的算法,并将每一个算法封装起来,使每个算法可以相互替代,使算法本身和使用算法的客户端分割开来,相互独立。
特点

  1.  优点:取代大量的if-else操作,可以自由切换,拓展性好。

  2.  缺点:每添加一个策略,就要增加一个类导致策略类过多。

实现原理

IStrategy(策略接口角色):用来指定具体的策略算法,策略上下文角色 ConcreteStrategy 实现具体的策略算法。

ConcreteStrategy(具体策略实现角色):具体的策略实现,即具体的算法实现。

StrategyContext (策略上下文角色):负责和具体的策略实现交互内部持有一个真正的策略实现对象,策略上下文还可以让具体的策略实现从其中获取相关数据,回调策略上下文对象的方法。
适用

  1. 一个系统中如果有许多类,他们的行为各不相同的场景。

  2. 一个系统需要在几种算法中选择一种。

策略模式

实现

第一步:定义策略接口。

public interface IStrategy {
    
    public void use();

}

第二步:具体策略实现角色。

// 策略 1
public class Bicycle implements IStrategy {
    @Override
    public void use() {
        System.out.println("选用 自行车...出行");
    }
}
// 策略 2 
public class Car  implements IStrategy {
    @Override
    public void use() {
        System.out.println("选用 汽车...出行");
    }
}

第三步:策略上下文角色Context。

public class Context {
    private IStrategy strategy;

    public Context(IStrategy strategy) {
        this.strategy = strategy;
    }

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

    public void executeStrategy(){
        strategy.use();
    }
}

第四步:测试。

public class Test {
    public static void main(String[] args) {
        Context context = new Context(new Car());
        context.executeStrategy();
        context.setStrategy(new Bicycle());
        context.executeStrategy();
        /*
        选用 汽车...出行
        选用 自行车...出行
        */
    }
}

 

你可能感兴趣的:(设计模式)