zoukankan      html  css  js  c++  java
  • 策略模式

    一、策略模式常出现在我们的代码中

    1、最常见的if else 

    如果判断的层次太深,或者判断后执行的逻辑太多,建议使用策略类来封装不同的处理

    2、列表的排序规则

    Collections.sort(List<T> list, Comparator<? super T> c),Comparator就是排序策略,这里用匿名内部类实现

    3、依赖策略接口,设值注入

    RocketMQ对事务消息的处理:

    当RocketMQ发现`Prepared消息`时,会根据这个Listener实现的策略来决断事务
    TransactionCheckListener transactionCheckListener = new TransactionCheckListenerImpl();
    // 构造事务消息的生产者
    TransactionMQProducer producer = new TransactionMQProducer("groupName");
    // 设置事务决断处理类
    producer.setTransactionCheckListener(transactionCheckListener);

    通过setxxx方法来注入所需的策略类

    二、策略模式的意义

    1、消除一些if else提高代码的可读性和面向对象性

    2、隔离策略的变化,降低策略改变对代码更改的影响

    3、切换策略更简单

  • 相关阅读:
    670. Maximum Swap
    653. Two Sum IV
    639. Decode Ways II
    636. Exclusive Time of Functions
    621. Task Scheduler
    572. Subtree of Another Tree
    554. Brick Wall
    543. Diameter of Binary Tree
    535. Encode and Decode TinyURL
    博客园自定义背景图片
  • 原文地址:https://www.cnblogs.com/ptw-share/p/7027323.html
Copyright © 2011-2022 走看看