设计模式随笔(八):策略模式

概述

  策略模式是对具体算法和逻辑的包装,把使用算法的责任和算法本身分开,系统可以在对应情况下动态选择集中算法中的一种,实现某个特定功能。

  客户端增加行为不用修改源代码,只需要添加一个子类,可以减少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()
    }

}

 

posted @ 2021-01-13 11:38  胡吃海喝的程序猿  阅读(59)  评论(0编辑  收藏  举报