概述
策略模式是对具体算法和逻辑的包装,把使用算法的责任和算法本身分开,系统可以在对应情况下动态选择集中算法中的一种,实现某个特定功能。
客户端增加行为不用修改源代码,只需要添加一个子类,可以减少if else的使用。
UML
Context(上下文对象):持有Strategy的上下文对象,调用opration方法的实际位置
Strategy(抽象策略角色):抽象角色,给出所有的具体策略所需的接口
Strategy_1,Strategy_2,
创建Strategy接口
public interface LogStrategy{ void printLog(); // 日志打印接口 }
实现类1
public class InfoLog implements LogStrategy { @override public void printLog() { log.info("打印正常日志"); } }
实现类2
public class ErrorLog implements LogStrategy { @override public void printLog() { log.error("输出错误日志"); // 发送告警邮件给码农 // ... ... } }
上下文调用
public class Client { public static void main(String[] args) { //选择并创建需要使用的策略对象 LogStrategy strategy = new InfoLog(); strategy.printLog() } }