速记Java八股文—— Java 设计模式篇

前言

分类汇总 20+ 常见的 Java 设计模式篇 经典后端面试题,并对题目进行了精炼总结,旨在帮助大家高效记忆,在面试中游刃有余,不至于陷入词穷的窘境。

Java 设计模式篇


一共有多少种设计模式,分成几类?

一共有23种设计模式。共分为3类。

  1. 创建型模式

    • 单例模式(Singleton):确保一个类只有一个实例,并提供一个全局访问点。

    • 工厂方法模式(Factory Method):定义一个接口用于创建对象,但让子类决定要实例化的类是哪一个。

    • 抽象工厂模式(Abstract Factory):提供一个接口,用于创建一系列相关或依赖对象,而不需要明确指定它们的类。

    • 建造者模式(Builder):将复杂对象的构建与其表示分离,允许通过精确指定构建和表示步骤来构造复杂对象。

    • 原型模式(Prototype):通过复制现有的实例来创建新的实例。

  2. 结构型模式

    • 适配器模式(Adapter):允许将不兼容的接口转换为一个可以使用的兼容接口。

    • 桥接模式(Bridge):分离一个类的行为,使它从它的形式中分离出来,使它们可以独立地变化。

    • 组合模式(Composite):允许你将对象组合成树形结构以表示"部分-整体"的层次结构。

    • 装饰器模式(Decorator):动态地添加另一个对象的功能,而不是创建它们子类的新的类。

    • 外观模式(Facade):为子系统中的一组接口提供一个一致的界面。

    • 享元模式(Flyweight):以共享的方式高效地支持大量细粒度的对象。

    • 代理模式(Proxy):为其他对象提供一个代理或占位符,以控制对这个对象的访问。

  3. 行为型模式

    • 责任链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合。

    • 命令模式(Command):将一个请求封装为一个对象,从而可以用不同的请求对客户进行参数化。

    • 解释器模式(Interpreter):定义一个语言的文法,并且建立一个解释器来解释该语言中的句子。

    • 迭代器模式(Iterator):提供一种顺序访问聚合对象元素的方法,而不暴露聚合对象的内部表示。

    • 中介者模式(Mediator):定义一个中介对象来简化其他对象(同事类)之间的交互。

    • 备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。

    • 观察者模式(Observer):当对象间存在一对多关系时,则使用观察者模式。一个被观察的对象变化时,所有依赖它的对象都会得到通知并自动更新。

    • 状态模式(State):允许对象在其内部状态改变时改变它的行为。

    • 策略模式(Strategy):定义一系列算法,把它们一个个封装起来,并使它们可以互换。

    • 模板方法模式(Template Method):定义一个操作中算法的骨架,而将一些步骤延迟到子类中。

    • 访问者模式(Visitor):表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。


相关推荐
一叶飘零_sweeeet1 分钟前
Spring Boot 4.0:云原生 Java 开发的范式革命
java·spring boot·云原生
Devin~Y1 分钟前
大厂 Java 面试实战:Spring Boot 微服务 + Redis 缓存 + Kafka 消息 + Kubernetes + RAG(小Y水货翻车记)
java·spring boot·redis·kafka·spring security·jwt·oauth2
朱一头zcy2 分钟前
设计模式入门:简单认识单例模式、模板方法、工厂模式、装饰模式、动态代理
java·设计模式
tmacfrank2 分钟前
Kotlin 协程十一 —— 协作、互斥锁与共享变量
java·开发语言·kotlin
小江的记录本8 分钟前
【分布式】分布式核心组件——分布式限流:固定窗口、滑动窗口、漏桶、令牌桶算法,网关层/服务层限流实现
java·分布式·后端·python·算法·安全·面试
Hanson,9 分钟前
SpringBoot前后端分离框架中,在请求头加入签名
java·spring boot·后端
不懂的浪漫10 分钟前
一次设备映射缓存设计:用多索引 Map 把高频查询从遍历变成直接命中
java·算法·spring·缓存
好家伙VCC12 分钟前
# React发散创新:从状态管理到自定义Hook的极致实践与性能优化在现代前端开发
java·javascript·python·react.js·性能优化
eLIN TECE15 分钟前
Redis重大版本整理(Redis2.6-Redis7.0)
java·数据库·redis