一、概述
1、定义
Define a family of algorithms,encapsulate each one,and make them interchangeable.(定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。)
2、通用类图
3、基本介绍
- 策略模式中,定义算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户;
- 策略模式中体现了几个设计原则:①把变化的代码从不变的代码中分离出来;②针对接口编程而不是具体类;③多用组合/聚合,少用继承,策略模式中Context通过聚合使用策略。
二、通用源码
Strategy抽象策略角色:
策略、算法家族的抽象,通常为接口,定义每个策略或算法必须具有的方法和属性。
//抽象策略角色
public interface Strategy {
//策略模式的运算法则
public void strategyMethod();
}
ConcreteStrategy具体策略角色:
实现抽象策略中的操作。
//具体策略1
public class ConcreteStrategy1 implements Strategy {
@Override
public void strategyMethod() {
System.out.println("策略1的运算法则");
}
}
//具体策略2
public class ConcreteStrategy2 implements Strategy {
@Override
public void