## **模式的定义**
定义了一组算法,将每个算法都封装起来,并且使它们之间可以互换。
举个传销的栗子,传销体系结算中,一级代理、二级代理、三级代理等等都有他们对应等级的结算算法,那我们就可以利用策略模式封装每级代理的结算算法,并提供统一的结算方法,只要输入代理等级就可以输出对应的结算金额。
## **代码实现**
1. 定义标准结算算法策略并实现各个级别的结算策略
```
// 定义抽象算法策略
public abstract class Strategy {
// 结算
abstract void settle();
}
// 实现一级代理结算策略
public class Level1Strategy extends Strategy{
@Override
void settle() {
System.out.println("一级代理结算");
}
}
// 实现二级代理结算策略
public class Level2Strategy extends Strategy{
@Override
void settle() {
System.out.println("二级代理结算");
}
}
```
2. 创建对外调用的结算实例
```
public class SettleContext {
private Strategy strategy;
public SettleContext(Strategy strategy) {
this.strategy = strategy;
}
// 执行
public void execute() {
strategy.settle();
}
}
```
3. 客户端调用
```
public static void main(String[] args) {
SettleContext context1 = new SettleContext(new Level1Strategy());
context1.execute();
SettleContext context2 = new SettleContext(new Level2Strategy());
context2.execute();
}
```