重读 Java 设计模式: 探索经典之道与 Spring 框架的设计

本文讲述了作者从大学毕业后对设计模式的理解变化,强调了设计模式在Spring框架中的重要性,特别是设计原则如何指导框架设计。作者计划通过系列文章深入探讨设计模式在Spring框架中的应用,提升代码的优雅性和可维护性。

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

写在开头

记得大学刚毕业那会儿,想学点东西,于是拿出了《Head First 设计模式》这本书,就开始了阅读,我曾对这些模式感到晦涩难懂。然而,随着工作岁月的增长,我逐渐领悟到设计模式的价值,尤其是在实践中,特别是在Spring这样的大型设计框架中。

刚开始接触设计模式时,我常常感到困惑。这些模式的概念和实现方式似乎遥不可及,就像是编程世界中的高塔一样,让人望而却步。然而,随着不断地学习和实践,我渐渐明白了设计模式的真正价值所在。

设计模式并不仅仅是一些理论概念,它们是一种解决常见问题的实用方法,是编写优雅、高效代码的利器。在工作中,我越来越多地意识到,设计模式不仅仅是理论上的东西,而是可以直接应用于实践的工具。

特别是在与Spring框架的设计与开发中,设计模式发挥了极其重要的作用。Spring框架本身就是一个设计模式的典范,它采用了诸如依赖注入、工厂模式、代理模式等多种设计模式,使得框架具有高度的灵活性和可扩展性。

因此,我想借此机会将我在设计模式与Spring框架结合实践中所获得的经验分享给大家。通过这个专栏,我希望能够帮助更多的人理解设计模式的精髓,以及它们在实际项目中的应用。让我们一起探索设计模式的奥秘,以及它们在大型框架设计中的实战价值!

该专栏按照如下大纲进行编写,首先会介绍设计原则,在理解完设计原则后,我们深入了解每一种设计模式及其在 Spring 框架中的应用。

image-20240303225038336

从设计原则出发

设计模式的核心是一系列设计原则,它们为软件设计提供了基本的指导方针。在阅读Spring框架的设计时,我们也将遵循这些设计原则,并结合Spring框架的实践,探讨如何将这些设计原则应用于框架的设计与实现。

1. 单一职责原则(Single Responsibility Principle - SRP)

Spring 框架中的各个组件(如控制器、服务、数据访问对象等)都遵循了单一职责原则,每个组件都专注于执行特定的任务,从而提高了代码的内聚性和可维护性。

这里给出 Spring 框架中几个类,大家去感受一下:

  • XmlBeanDefinitionReader : 负责加载 XML 类型资源的 BeanDefinition(Bean 的元信息)。
  • AutowiredAnnotationBeanPostProcessor : 负责 @Autowired 注解注入依赖的实现(方法注入、字段注入)。

2. 开放-封闭原则(Open-Closed Principle - OCP)

Spring框架通过面向接口编程和依赖注入等机制,实现了对扩展的开放和对修改的封闭。框架的核心功能可以在不修改原有代码的情况下进行扩展和定制,从而提高了系统的可扩展性和灵活性。

这一项,Spring 中更是到处可见,就拿 BeanFactory 体系来举例,我们先来看下 BeanFactory 及其部分派生接口:

image-20240303230000486

大家在 Spring 源码中可以自行搜索看下每个接口中的功能定义,每个接口各司其职(单一职责),新增功能不会堆在一个接口内,例如 ListableBeanFactory 继承 BeanFactory,在负责 BeanFactory 功能的同时,扩展了 Bean 集合查找的特性。

3. 里氏替换原则(Liskov Substitution Principle - LSP)

Spring 框架中的各个组件都遵循了里氏替换原则,子类对象可以替换父类对象并且不影响程序的正确性。这样保证了框架的稳定性和可扩展性。

这里给大家举个例子:

public class Demo {
   
  public static void main(String[] args) {
   
    DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
    // 重点关注 XmlBeanDefinitionReader 构造器
    XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory);
    reader.loadBeanDefinitions
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值