一、定义
策略模式是行为模式之一
对一系列算法做封装,为所有算法定义一个抽象的接口,并通过继承该接口实现所有算法的封装和实现,具体算法由使用方选择,该模式主要用于算法的平滑切换
二、类图
工作流程:
Executor持有策略的接口,具体实现在初始化时,由构造传入
接口实现可以有多个,例如MethodA/B/C/D...等,构造出执行机后,执行execute方法,自动执行对应的策略,因为执行机是由接口组成,因此使用了组成的uml图,组成执行机后,即可实现不同策略的执行
代码:
/**
* 策略接口
*/
public interface IStrategy {
/**
* 编码类型
*/
void enCode();
}
/**
* 策略A
*/
public class MethodAStrategy implements IStrategy {
@Override
public void enCode() {
System.out.println("编码方式1");
}
}
/**
* 策略B
*/
public class MethodBStrategy implements IStrategy {
@Override
public void enCode() {
System.out.println("编码方式2");
}
}
/**
* 执行机,=上下文
*/
public class Executor {
private IStrategy strategy;
public Executor(IStrategy strategy) {
this.strategy = strategy;
}
/**
* 对外暴露的方法
*/
public void execute(){
strategy.enCode();
}
}
测试方法
public class Main {
public static void main(String[] args) {
Executor context = new Executor(new MethodAStrategy());
context.execute();
System.out.println("***********");
context = new Executor(new MethodBStrategy());
context.execute();
}
}
结果