iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java策略模式实例分析
  • 927
分享到

Java策略模式实例分析

2023-06-29 08:06:18 927人浏览 薄情痞子
摘要

这篇文章主要讲解了“Java策略模式实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java策略模式实例分析”吧!优点算法可以自由切换。避免使用多重条件判断。扩展性良好。缺点策略类会增

这篇文章主要讲解了“Java策略模式实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java策略模式实例分析”吧!

    优点

    算法可以自由切换。

    避免使用多重条件判断。

    扩展性良好。

    缺点

    策略类会增多。

    所有策略类都需要对外暴露。

    使用场景

    如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。

    一个系统需要动态地在几种算法中选择一种。

    如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使用多重的条件选择语句来实现。

    一、实现方式

    假设一个场景,我们在电商系统中,订单分为很多种,例如:普通订单,秒杀订单,拼团订单等等。我们需要创建一个订单的时候,由于订单的类型不同,我们需要根据订单的类型执行不同的业务逻辑。

    1、订单类型枚举类

    package com.asurplus.common.strategy;import lombok.AllArgsConstructor;import lombok.Getter;@Getter@AllArgsConstructorpublic enum OrderTypeEnum {    COMMON(1001, "普通订单"),    SECKILL(1002, "秒杀订单"),    SPELL(1003, "拼团订单");    int type;    String desc;}

    我们的订单分为三种,普通订单,秒杀订单,拼团订单。

    2、订单处理接口

    package com.asurplus.common.strategy;public interface OrderService {        void createOrder();        OrderTypeEnum type();}

    3、普通订单处理器

    package com.asurplus.common.strategy;import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Service;@Slf4j@Servicepublic class CommonOrderServiceImpl implements OrderService {    @Override    public void createOrder() {        log.info("创建 普通订单");    }    @Override    public OrderTypeEnum type() {        return OrderTypeEnum.COMMON;    }}

    4、秒杀订单处理器

    package com.asurplus.common.strategy;import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Service;@Slf4j@Servicepublic class SeckillOrderServiceImpl implements OrderService {    @Override    public void createOrder() {        log.info("创建 秒杀订单");    }    @Override    public OrderTypeEnum type() {        return OrderTypeEnum.SECKILL;    }}

    5、拼团订单处理器

    package com.asurplus.common.strategy;import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Service;@Slf4j@Servicepublic class SpellOrderServiceImpl implements OrderService {    @Override    public void createOrder() {        log.info("创建 拼团订单");    }    @Override    public OrderTypeEnum type() {        return OrderTypeEnum.SPELL;    }}

    6、下单管理器

    package com.asurplus.common.strategy;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import java.util.List;import java.util.Optional;@Componentpublic class OrderManager {        @Autowired    private List<OrderService> orderServices;        public void createOrder(int type) {                Optional<OrderService> any = orderServices.stream().filter(f -> f.type().getType() == type).findAny();                if (!any.isPresent()) {            throw new RuntimeException("没有找到相应的订单实现");        }        // 创建订单        any.get().createOrder();    }}

    这里就能体现出 @Autowired 的强大之处,可以一次性自动注入多个对象。根据订单类型,选出对应的处理器来处理该订单。

    二、测试

    1、引入依赖

    <!-- 测试依赖 --><dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-test</artifactId></dependency>

    2、测试用例

    package com.asurplus.common.strategy;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringRunner;@RunWith(SpringRunner.class)@SpringBootTestpublic class TestMain {    @Autowired    private OrderManager orderManager;    @Test    public void test() {        // 创建 秒杀订单        orderManager.createOrder(OrderTypeEnum.SECKILL.getType());    }}

    输出结果

    Java策略模式实例分析

    感谢各位的阅读,以上就是“Java策略模式实例分析”的内容了,经过本文的学习后,相信大家对Java策略模式实例分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

    --结束END--

    本文标题: Java策略模式实例分析

    本文链接: https://www.lsjlt.com/news/323575.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Java策略模式实例分析
      这篇文章主要讲解了“Java策略模式实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java策略模式实例分析”吧!优点算法可以自由切换。避免使用多重条件判断。扩展性良好。缺点策略类会增...
      99+
      2023-06-29
    • Java设计模式之策略模式实例分析
      这篇文章主要介绍“Java设计模式之策略模式实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java设计模式之策略模式实例分析”文章能帮助大家解决问题。1.基本介绍1)策略模式(Strateg...
      99+
      2023-06-30
    • java策略模式的示例分析
      这篇文章给大家分享的是有关java策略模式的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。定义:定义一组算法,将每个算法都封装起来,并且使他们之间可以互换。类型:行为类模式类图:  &...
      99+
      2023-05-30
      java
    • java设计模式中策略模式的示例分析
      小编给大家分享一下java设计模式中策略模式的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!策略模式策略模式(Strategy Pattern)属于行为型模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实...
      99+
      2023-06-20
    • C#策略模式的示例分析
      小编给大家分享一下C#策略模式的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!策略模式所谓策略其实就是做一件事情有很多很多的方法,比如说一个商场要搞促销,...
      99+
      2023-06-29
    • web前端中策略模式的示例分析
      这篇文章将为大家详细讲解有关web前端中策略模式的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。策略模式(Strategy Pattern)策略模式简单描述就是:...
      99+
      2024-04-02
    • JavaScript设计模式策略模式案例分享
      前言 策略设计模式就是指一个问题匹配多个解决方法,不一定要用到哪一个,而且有可能随时增加多个方案 比如我们去买书,书店都会搞一些优惠活动,满100减20,满200减50,八折优惠这些...
      99+
      2024-04-02
    • Java 策略模式 if-else用法实例详解
      目录引言:策略模式comparable接口comparator接口不同的排序策略实现策略模式比if-else香在哪呢?有缺点吗?策略模式有哪些使用场景呢?有N多个策略怎么办?总结引言...
      99+
      2024-04-02
    • java策略模式如何实现
      本篇内容介绍了“java策略模式如何实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 刘备要到江东娶老婆了,走之前诸葛亮给赵云(...
      99+
      2023-06-19
    • Java策略模式怎么实现
      这篇文章主要介绍“Java策略模式怎么实现”,在日常操作中,相信很多人在Java策略模式怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java策略模式怎么实现”的疑惑有所帮助!接下来,请跟着小编一起来...
      99+
      2023-06-02
    • Java设计模式之策略模式示例详解
      目录定义结构UML类图UML序列图深入理解策略模式策略和上下文的关系策略模式在JDK中的应用该策略接口有四个实现类策略模式的优点策略模式的缺点策略模式的本质在讲策略模式之前,我们先看...
      99+
      2024-04-02
    • Java设计模式之策略模式案例详解
      目录优缺点Spring中哪里使用策略模式策略模式设计图代码案例为什么使用策略模式 答:策略模式是解决过多if-else (或者switch-case)代码块的方法之一,提高代码的可维...
      99+
      2024-04-02
    • Java设计模式之策略模式深入刨析
      目录1.基本介绍2.传统方式3.采用策略模式4.策略模式的注意事项和细节1.基本介绍 1)策略模式(Strategy Pattern)中,定义算法族(策略组),分别封装起来,让他们之...
      99+
      2024-04-02
    • 详解Java策略模式
      一、策略模式到底是什么? 策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端...
      99+
      2024-04-02
    • Java线程中的安全策略实例分析
      这篇文章主要介绍“Java线程中的安全策略实例分析”,在日常操作中,相信很多人在Java线程中的安全策略实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java线程中的安全策略实例分析”的疑惑有所帮助!...
      99+
      2023-06-30
    • Java设计模式之策略模式
      在一个收银系统中,如果普通用户、中级会员、高级会员分别对应着不同的优惠策略,常规编程就要使用一系列的判断语句,判断用户类型,这种情况下就可以使用策略模式。 一、概念理解 策略模式的概...
      99+
      2022-11-13
      Java 设计模式 策略模式
    • Java中如何实现策略模式
      这篇文章给大家分享的是有关Java中如何实现策略模式的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。这里设计了一个有关足球的场景,在进攻当中暂分为传球和射门两个动作。最开始你可能会这样想,设计一个抽象类(Attac...
      99+
      2023-06-17
    • java设计模式策略模式图文示例详解
      目录策略模式意图问题解决方案真实世界类比策略模式结构伪代码策略模式适合应用场景实现方式策略模式优缺点策略模式优缺点与其他模式的关系策略模式 亦称:Strategy 意图 策略模式是一...
      99+
      2024-04-02
    • Spring MVC策略模式之MethodArgumentResolver源码分析
      今天小编给大家分享一下Spring MVC策略模式之MethodArgumentResolver源码分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后...
      99+
      2023-07-05
    • java设计模式之策略模式怎么实现
      这篇文章主要介绍了java设计模式之策略模式怎么实现,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。策略模式:策略模式是一种定义一系列算法的方法,算法完成的工作都是相同的工作,...
      99+
      2023-05-31
      java
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作