前言
实现Runnable接口是启动多线程最常见的方式, 而这个过程中我们实则使用了策略模式
策略模式UML图
策略模式有以上角色: 抽象策略(Strategy)), 具体策略, 环境上下文(Context), 其中Context角色依赖Strategy
一个策略模式案例
@FunctionalInterface
// Strategy角色, 也是函数式接口
public interface Strategy {
double calculate(double salary, double bonus);
}
// Context 上下文环境, 依赖Strategy
public class TaxCalculator {
// 工资
private final double salary;
// 奖金
private final double bonus;
// 计税策略
private Strategy strategy;
public TaxCalculator(double salary, double bonus, Strategy strategy) {
this.salary = salary;
this.bonus = bonus;
this.strategy = strategy;
}
public double getSalary() {
retur