乱用!这5大原则在SpringBoot中你用对了?

文摘   2024-11-05 19:00   新疆  

最新实战案例锦集:《Spring Boot3实战案例合集》持续更新,每天至少更新一篇文章,订阅后将赠送文章最后展示的所有MD文档(学习笔记)。

环境:SpringBoot3.2.5



1. 简介

在软件开发中,面向对象设计对于创建易于更改、扩展和再次使用的代码非常重要

SOLID原则是面向对象编程和软件开发中的5个设计原则,旨在创建更易于维护、更灵活和可扩展的软件。它们由Robert C. Martin提出,被广泛用作设计简洁高效代码的指导原则。而SOLID中的每个字母都代表以下原则之一:

  • Single Responsibility Principle (SRP)单一职责原则

  • Open/Closed Principle (OCP)开闭原则

  • Liskov's Substitution Principle (LSP)里氏替换原则

  • Interface Segregation Principle (ISP)接口隔离原则

  • Dependency Inversion Principle (DIP)依赖倒置原则

在接下来将详细介绍在SpringBoot程序中如何正确的应用上面5大原则。

2. 实战案例

2.1 单一职责原则SRP

一个类应该有一个,而且只有一个改变的理由。单一职责原则有2个关键原则:

  1. 你的类或方法应该只有一个改变的理由

  2. 你的类或方法应该只有一个职责


先来看个不正确的用法:

@RestController@RequestMapping("/orders")public class OrderController {
  private final OrderService orderService; public OrderController(OrderService orderService) {    this.orderService= orderService; }
  @PostMapping("")  public ResponseEntity<Void> createOrderAndSendSms(@RequestBody OrderVO orderVO) {      this.orderService.createOrder(orderVO) ;      this.orderService.sendSms(String.format("订单号【%s】创建成功", orderVO.getSno())) ; return ResponseEntity.status(HttpStatus.OK.value()).build() ; }}

OrderService类干了2件事,创建订单&发送短信

@Servicepublic class OrderService {  private final OrderRepository orderRepository ;  public OrderService(OrderRepository orderRepository) {    this.orderRepository = orderRepository ;  }  @Transactional  public void createOrder(OrderVO orderVO) {    // TODO  }  public void sendSms(String message) {    // TODO  }}

这里的OrderService类不具备单一职责原则,它不仅负责订单的管理,还进行短信的发送,这违反了单一职责原则。

在创建代码时,需要避免将太多任务放在一个地方——无论是类还是方法。如下图所示:

Spring全家桶实战案例源码
spring, springboot, springcloud 案例开发详解
 最新文章