今天学习多线程的时候,了解到多线程的Thread和Runnable中都有策略模式的提现,所以特意学了一下策略模式。
策略模式的三个组成部分分别为:抽象策略角色、具体策略角色、环境角色(策略类的实例作为环境角色的成员变量)
翻译成我们容易理解的对应关系就是
抽象策略角色:接口
具体策略角色:接口实现类
环境角色:调用接口的类(里面必须有一个类型为抽象策略角色的成员变量)
概念:策略模式就是事先准备好一系列算法,这些算法之间可以相互代替,且算法与调用的客户端相互独立。
话不多说,直接上代码,至于策略模式的优缺点,先读完下面的代码再谈更容易理解
代码模拟场景:计算每月工资和奖金需要纳税的总金额
/**
* 抽象策略角色
* @Date: 2019/4/16 14:44
*/
public interface TaxCount {
double count(double salary,double bouns);
}
/**
* 具体策略角色(策略类)
* @Date: 2019/4/16 14:51
*/
public class SimpleTaxCount implements TaxCount{
//工资纳税1%
private static final double SALARY_RATE = 0.1;
//奖金纳税1.5%
private static final dou