java重点学习-设计模式

十三 设计模式

工厂模式 :spring中使用(目的是:解耦

1.简单工厂

  • 所有的产品都共有一个工厂,如果新增产品,则需要修改代码,违反开闭原则·
  • 是一种编程习惯,可以借鉴这种编程思路

2.工厂方法模式

  • ·给每个产品都提供了一个工厂,让工厂专门负责对应的产品的生产,遵循开闭原则
  • · 项目中用的最多

3.抽象工厂方法模式

  • ·如果有多个纬度的产品需要配合生产时,优先建议采用抽象工厂(工厂的工厂)
  • 一般的企业开发中的较少

策略模式

13.1 简单工厂模式

13.2 工厂方式模式

13.3 抽象工厂模式

13.4 策略模式

  • 该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户
  • 一个系统需要动态地在几种算法中选择一种时,可将每个算法封装到策略类中
  • 它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理

策略模式的主要角色如下:

  • 抽象策略(Strategy)类:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口
  • 具体策略(Concrete Strategy)类: 实现了抽象策略定义的接口,提供具体的算法实现或行为。
  • 环境(Context)类:持有一个策略类的用,最终给客户端调用

13.5 登录案例(工厂模式+策略模式)

在getTypes中获取胚配置中所有的types,遍历后存入到Map中,

spring生命周期中有aware,此时提供applicationContext上下文对象,就会获取bean当如到Map的value中

完成 根据不同的参数完成不同的策略

1.其他案例(策略) 举一反三

  • 订单的支付策略(支付宝、微信、银行卡...)
  • 解析不同类型excel(xls格式、xlsx格式)
  • 打折促销(满300元9折、满500元8折、满1000元7折..)
  • 物流运费阶梯计算(5kg以下、5-10kg、10-0kg、20kg以上)

一句话总结:只要代码中有长的 if-else 或 switch 分支判断都可以采用策略模式优化

2.其他案例(工厂方法+策略)

  • 介绍业务(登录、支付、解析excel、优惠等级...)
  • 提供了很多种策略,都让spring容器管理
  • 提供一个工厂:准备策略对象,根据参数提供对象

13.6 责任链设计模式

责任链模式:为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止

  • 抽象处理者 (Handler)角色: 定义一个处理请求的接口,包含抽象处理方法和一个后继连接.
  • 具体处理者(Concrete Handler)角色:实现抽象处理者的处理方法,判断能否处理本次请求,如果可以处理请求则处理,否则将该请求转给它的后继者
  • 客户类(Client)角色:创建处理链,并向链头的具体处理者对象提交请求,它不关心处理细节和请求的传递过程
相关推荐
竹言笙熙5 分钟前
代码审计初探
学习·web安全
日记成书7 分钟前
物联网智能项目
物联网·学习
虾球xz34 分钟前
游戏引擎学习第118天
学习·游戏引擎
ThereIsNoCode1 小时前
「软件设计模式」状态模式(State)
设计模式·状态模式
gz927cool1 小时前
大模型做导师之开源项目学习(lightRAG)
学习·开源·mfc
风与沙的较量丶1 小时前
Java中的局部变量和成员变量在内存中的位置
java·开发语言
m0_748251721 小时前
SpringBoot3 升级介绍
java
极客先躯2 小时前
说说高级java每日一道面试题-2025年2月13日-数据库篇-请说说 MySQL 数据库的锁 ?
java·数据库·mysql·数据库的锁·模式分·粒度分·属性分
程序员侠客行2 小时前
Spring事务原理 二
java·后端·spring
世事如云有卷舒2 小时前
FreeRTOS学习笔记
笔记·学习