策略模式

策略模式是一种设计模式,允许在不同的场景下灵活切换不同的算法策略。文章介绍了策略模式的定义、UML结构图、Java实现、使用场景、优缺点,并通过Java代码示例进行解释。还提到了JDK中的策略模式应用,如线程池的拒绝策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

0.背景概述

1.策略模式简介

    1.1 策略模式定义

    1.2 策略模式的UML结构图

   2. 策略模式的Java实现

         2.1UML类图

        2.2用例代码

3.策略模式的使用场景

4.策略模式的优缺点

5.JDK中的策略模式

6.结语


0.背景概述

每次重温陈道明老师出演的电视剧《楚汉传奇》都有一种让人热血沸腾的感觉,宏大的战争场面,上百万士兵的厮杀,决定一场战斗胜负的因素有很多。比如士兵的素质,士兵人数的寡众,兵器的优良,统帅的谋略等,而对于一场战斗胜负的关键除了这些因素之外还有应该就是在何时使用何种兵器来对敌也非常重要,古代兵器的分类比如长矛,弓箭,机弩,长剑等,在何种情况下使用何种兵器对敌,对于一场战争的胜负而言尤为重要。

在日常的软件设计中,我们也经常遇到类似的问题,对于同一个问题,在不同的场景下面可能有不同的解决方式,如何针对不同的场景优雅的切换解决策略是一个优秀的研发人员需要考虑的问题。在大部分的解决方案中,最多的就是在代码中使用if..else来判断(或者switch),如果我们需要增加一种场景支持就只能在原有的代码逻辑里面增加判断逻辑,长此以往,代码里面的判断会越来越多,不利于代码的易读性和可修改性,有没有一种更好的设计来支持这类问题呢,让具体的算法策略与使用对象分割开。策略模式应运而生。

1.策略模式简介

    1.1 策略模式定义

    策略模式:Strategy pattern,定义一个算法簇,将每一种算法单独封装起来,使他们在不同的场景下面可以相互替换,是得具体的算法可以与使用对象独立开来。

    1.2 策略模式的UML结构图

        

 

       Context:上下文环境保存类,维持了一个Strategy对象,外部对象执行某个具体策略的入口

       Strategy:抽象策略接口,定义了一个算法簇的基本结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值