## **模式的定義**
定義了一組算法,將每個算法都封裝起來,并且使它們之間可以互換。
舉個傳銷的栗子,傳銷體系結算中,一級代理、二級代理、三級代理等等都有他們對應等級的結算算法,那我們就可以利用策略模式封裝每級代理的結算算法,并提供統一的結算方法,只要輸入代理等級就可以輸出對應的結算金額。
## **代碼實現**
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();
}
```