news 2026/9/23 19:36:33

Java设计模式系列 - 基本概念

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java设计模式系列 - 基本概念

基本思想

设计模式是软件开发中经过反复验证的、解决特定问题的优秀解决方案模板。在Java开发中,设计模式不仅是一种编程技巧,更是提高代码质量、可维护性和可扩展性的重要工具。使用设计模式的主要目的是为了重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式于己于他人于系统都是多赢的,它使得代码编制真正工程化,是软件工程的基石。

1. 分类体系

Java中一般认为有23种设计模式,这些模式可以分为三大类:创建型模式结构型模式行为型模式

1. 1 创建型模式(5种)

创建型模式关注对象的创建过程,它们提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是直接使用new操作符来实例化对象。这使得程序在决定对于给定的用例需要创建哪些对象时具有更大的灵活性。

创建型模式包括:

  • 工厂方法模式(Factory Method):定义一个创建对象的接口,让子类决定实例化哪个类
  • 抽象工厂模式(Abstract Factory):提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类
  • 单例模式(Singleton):确保某一个类只有一个实例,并且提供一个全局访问点
  • 建造者模式(Builder):将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示
  • 原型模式(Prototype):用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象

1.2 结构型模式(7种)

结构型模式关注类和对象的组合方式,它们通过继承概念来组合接口并定义方法组合对象以获得新功能。

结构型模式包括:

  • 适配器模式(Adapter):将一个类的方法接口转换成客户希望的另外一个接口
  • 装饰器模式(Decorator):动态地给对象添加新的功能
  • 代理模式(Proxy):为其他对象提供一个代理以便控制这个对象的访问
  • 外观模式(Facade):对外提供一个统一的方法,来访问子系统中的一群接口
  • 桥接模式(Bridge):将抽象部分和它的实现部分分离,使它们都可以独立地变化
  • 组合模式(Composite):将对象组合成树形结构以表示"部分-整体"的层次结构
  • 享元模式(Flyweight):通过共享技术来有效地支持大量细粒度的对象

1.3 行为型模式(11种)

行为型模式特别关注对象之间的通信,它们描述了对象之间如何交互以及如何分配职责。

行为型模式包括:

  • 策略模式(Strategy):定义了算法族,分别封装起来,让它们之前可以互相转换
  • 模板方法模式(Template Method):在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中
  • 观察者模式(Observer):定义了对象之间的一对多依赖关系
  • 迭代子模式(Iterator):提供一种方法顺序访问一个聚合对象中的各个元素,而不暴露其内部的表示
  • 责任链模式(Chain of Responsibility):将请求的发送者和接收者解耦,使得多个对象都有处理这个请求的机会
  • 命令模式(Command):将请求封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象
  • 备忘录模式(Memento):在不破坏封装的前提下,捕获一个对象的内部状态
  • 状态模式(State):允许对象在内部状态发生改变时改变它的行为
  • 访问者模式(Visitor):在不改变数据结构的前提下,增加作用于一组对象元素的新功能
  • 中介者模式(Mediator):用一个中介对象来封装一系列的对象交互
  • 解释器模式(Interpreter):定义语言的文法,并且建立一个解释器来解释该语言中的句子

2. 设计模式的六大原则

设计模式的实现遵循六大基本原则,这些原则是设计模式的指导思想:

2.1 开闭原则(Open Close Principle)

开闭原则指的是对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简单理解就是:为了使程序的扩展性好,易于维护和升级,我们需要使用接口和抽象类。

2.2 里氏代换原则(Liskov Substitution Principle)

里氏代换原则是面向对象设计的基本原则之一。任何基类可以出现的地方,子类一定可以出现。只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。

2.3 依赖倒转原则(Dependence Inversion Principle)

这个是开闭原则的基础,具体内容:针对接口编程,依赖于抽象而不依赖于具体

2.4 接口隔离原则(Interface Segregation Principle)

这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。还是一个降低类之间的耦合度的意思,从这儿我们看出,其实设计模式就是一个软件的设计思想,从大型软件架构出发,为了升级和维护方便。

2.5 迪米特法则(最少知道原则)(Demeter Principle)

为什么叫最少知道原则,就是说:一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。

2.6 合成复用原则(Composite Reuse Principle)

原则是尽量使用合成/聚合的方式,而不是使用继承。

3. 设计模式的实际应用与选择原则

3.1 如何选择合适的设计模式

设计模式并不是解决所有问题的银弹,而是一种工具,需要根据实际情况和需求来选择和使用。在选择设计模式时,应考虑以下因素:

  1. 问题类型:首先要明确需要解决的问题属于哪一类(创建、结构、行为)
  2. 系统需求:考虑系统的可扩展性、可维护性、性能要求等
  3. 团队熟悉度:选择团队成员熟悉的设计模式,以降低学习成本
  4. 代码复杂度:避免过度设计,简单的设计往往更易于维护

3.2 设计模式的最佳实践

  1. 理解模式意图:在使用设计模式前,必须充分理解该模式的意图和适用场景
  2. 避免模式滥用:不要为了使用模式而使用模式,简单的解决方案往往更好
  3. 结合具体场景:根据具体的业务需求和技术环境调整设计模式的实现
  4. 保持代码简洁:设计模式应该使代码更清晰,而不是更复杂
  5. 持续重构:随着需求变化,及时调整设计模式的使用

3.3 常见设计模式组合使用

在实际开发中,设计模式经常组合使用以解决复杂问题:

  1. 工厂模式 + 单例模式:创建全局唯一的工厂实例
  2. 装饰器模式 + 策略模式:动态地为策略对象添加新功能
  3. 观察者模式 + 命令模式:实现事件驱动的系统架构
  4. 组合模式 + 访问者模式:处理复杂的树形结构数据

4. 设计模式在Java中的应用

4.1 Spring框架中的设计模式

Spring框架大量使用了设计模式,例如:

  • 工厂模式:BeanFactory和ApplicationContext
  • 单例模式:Spring Bean默认是单例的
  • 代理模式:AOP的实现
  • 模板方法模式:JdbcTemplate、RestTemplate等
  • 观察者模式:ApplicationEvent和ApplicationListener

4.2 Java标准库中的设计模式

  • 迭代器模式:Java集合框架中的Iterator接口
  • 适配器模式:Arrays.asList()方法
  • 装饰器模式:Java IO流中的BufferedReader、BufferedWriter
  • 策略模式:Comparator接口和Collections.sort()方法

4.3 微服务架构中的设计模式

在现代微服务架构中,设计模式仍然发挥着重要作用:

  • API网关模式:外观模式的现代应用
  • 服务发现模式:单例模式和工厂模式的结合
  • 断路器模式:状态模式的实际应用
  • 配置中心模式:观察者模式的分布式实现
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/23 3:16:34

探秘常见机器人控制运动上位机源码:解锁多种运动算法

常见机器人控制运动上位机源码,包涵多种运动算法。 支持marilink 提供技术文档嘿,各位技术爱好者们!今天来聊聊常见机器人控制运动上位机源码,这可是个超有趣又实用的领域。 一、概述 在机器人开发中,上位机就像是机器…

作者头像 李华
网站建设 2026/9/22 22:45:45

9 个降AI率工具,继续教育学生必备!

9 个降AI率工具,继续教育学生必备! AI降重工具:让论文更自然,让学术更真实 在当前的学术写作环境中,随着AI技术的广泛应用,越来越多的学生和研究者面临一个共同的问题——如何有效降低AIGC率,同…

作者头像 李华
网站建设 2026/9/23 4:15:08

运用工具Postman快速导出python接口测试脚本

Postman的脚本可以导出多种语言的脚本,方便二次维护开发。 Python的requests库,支持python2和python3,用于发送http/https请求 使用unittest进行接口自动化测试 一、环境准备 1、安装python(使用python2或3都可以)…

作者头像 李华
网站建设 2026/9/23 11:28:37

研发管理软件:合规・协同・智能・灵活为汽车部件行业研发管理强力赋能——全星研发管理APQP软件系统功能解析

研发管理软件:合规・协同・智能・灵活为汽车部件行业研发管理强力赋能——全星研发管理APQP软件系统功能解析在汽车部件、芯片半导体行业迈向高质量发展的进程中,IATF 16949、VDA等标准,对研发管理的体系化、标准化、全流程追溯提出了极高要求…

作者头像 李华
网站建设 2026/9/22 1:37:55

EMS-NT企业微电网能碳管理平台:架构、功能与应用研究

摘要随着“双碳”目标的推进,工业企业与园区面临能源管理与碳排放控制的双重挑战。本文基于《工业企业和园区数字化能碳管理中心建设指南》等政策背景,系统阐述了EMS-NT企业微电网能碳管理平台的解决方案、功能架构、关键技术及应用案例。平台以能源管理…

作者头像 李华
网站建设 2026/9/23 2:54:05

读捍卫隐私10读后总结与感想兼导读

1. 基本信息捍卫隐私​[美]凯文米特尼克,罗伯特瓦摩西,浙江人民出版社2019年9月1.1. 读薄率书籍总字数17.9万字,笔记总字数35721字。读薄率35721179000≈19.96%1.2. 读厚方向当我点击时,算法在想什么?算法霸权极简算法…

作者头像 李华