一、策略模式
策略模式定义了一组算法,将每个算法都封装起来,并且使它们之间可以互换
1、策略模式主要角色
主要角色如下:
封装角色(Context):也叫做上下文角色,起承上启下封装作用,屏蔽高层模块对策略、算法的直接访问,封装可能存在的变化
抽象策略角色(Strategy):策略家族的抽象,通常为接口,定义每个策略或算法必须具有的方法和属性
具体策略角色(ConcreteStrategy):实现抽象策略中的操作,该类含有具体的算法
2、实现策略模式
//抽象策略角色
public interface Strategy {
//策略模式的运算法则
void doSomething();
}
//具体策略角色
public class ConcreteStrategy1 implements Strategy {
@Override
public void doSomething() {
System.out.println("具体策略1的运算法则...");
}
}
//具体策略角色
public class ConcreteStrategy2 implements Strategy {
@Override
public void doSomething() {
System.out.println("具体策略2的运算法则...");
}
}
//封装角色
public class Context {
//抽象策略
private Strategy strategy;
//构造函数设置具体策略
public Context(Strategy strategy) {