zoukankan      html  css  js  c++  java
  • 设计模式随笔(八):策略模式

    概述

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

      客户端增加行为不用修改源代码,只需要添加一个子类,可以减少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()
        }
    
    }
  • 相关阅读:
    android progressbar 水平进度条
    jquery 下拉自动加载
    jquery ajax
    input 数字,字母汉字的限制方法(转帖)
    Jquery checkbox
    js运用6
    js运用5
    js运用4
    js运用3
    js运用2
  • 原文地址:https://www.cnblogs.com/chylcblog/p/13932969.html
Copyright © 2011-2022 走看看