速记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):表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。


相关推荐
水痕017 分钟前
gin结合minio来做文件存储
java·eureka·gin
寒士obj16 分钟前
Spring事物
java·spring
柯南二号1 小时前
【Java后端】Spring Boot 集成 MyBatis-Plus 全攻略
java·spring boot·mybatis
桦说编程9 小时前
Java 中如何创建不可变类型
java·后端·函数式编程
lifallen9 小时前
Java Stream sort算子实现:SortedOps
java·开发语言
IT毕设实战小研9 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
快乐的划水a9 小时前
组合模式及优化
c++·设计模式·组合模式
没有bug.的程序员9 小时前
JVM 总览与运行原理:深入Java虚拟机的核心引擎
java·jvm·python·虚拟机
甄超锋10 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
阿华的代码王国10 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端