Java设计模式之二:策略模式

本文阅读 3 分钟
首页 代码,Java 正文

引言

本文主要介绍策略模式的相关内容。主要说明策略模式是什么、怎么用及其对应的优缺点。

  • 策略模式介绍
  • 代码示例
  • 总结

一、策略模式介绍

到底什么是策略模式呢?按照我自己的理解,简单来说就是将具备统一任务属性的一类业务逻辑进行封装,调用方可以根据自身的业务场景和需要,进行策略的业务调用。 img 通过上图可知,策略模式涉及到的模块主要包括以下三个方面: 1、策略环境:类中包含策略引用; 2、抽象策略:抽象策略公共行为,包含所有策略的接口方法; 3、策略具体实现:封装了策略的不同算法实现;

二、代码示例

1、策略场景

public class StrategyContext { 
    //持有一个具体策略的对象
    private Strategy strategy;
    /** * 构造函数,传入一个具体策略对象 * @param strategy 具体策略对象 */
    public StrategyContext(Strategy strategy){ 
        this.strategy = strategy;
    }
    /** * 策略方法 */
    public void contextInterface(){ 
        
        strategy.strategyInterface();
    }
    
}

2、策略接口

public interface Strategy { 
    /** * 策略方法 */
    public void strategyInterface();
}

3、策略实现

public class StrategyA implements Strategy { 

    @Override
    public void strategyInterface() { 
        //相关的业务
    }

}
public class StrategyB implements Strategy { 

    @Override
    public void strategyInterface() { 
        //相关的业务
    }

}

4、策略使用

public class ContextClient { 
    public static void main(String[] args) { 
        Strategy  StrategyA = new StrategyA();
        StrategyContext contextA = new StrategyContext(StrategyA );
        //调用策略A的执行方法
        contextA.contextInterface();
    }
}

三、总结

策略模式的使用场景为把算法实现进行提取封装,独立于调用场景之外。

策略模式的优点: 1、当业务代码存在多重逻辑判断时,策略模式可以避免大量的if-else的判断,避免代码逻辑混乱,增强代码的可维护性; 2、可将策略中的公共部分进行高度抽象,避免代码重复;

策略模式的缺点: 1、调用方必须知道所有的策略实现类,增加了调用方的使用难度; 2、如果判断逻辑较多的话,会导致策略实现类较多;

本文为互联网自动采集或经作者授权后发布,本文观点不代表立场,若侵权下架请联系我们删帖处理!文章出自:https://blog.csdn.net/Diamond_Tao/article/details/101904497
-- 展开阅读全文 --
大白话讲解JDK源码系列:从头到尾再讲一遍ThreadLocal
« 上一篇 01-30
KillDefender 的 Beacon 对象文件 PoC 实现
下一篇 » 02-09

发表评论

成为第一个评论的人

热门文章

标签TAG

最近回复