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


相关推荐
P.H. Infinity24 分钟前
【RabbitMQ】04-发送者可靠性
java·rabbitmq·java-rabbitmq
生命几十年3万天28 分钟前
java的threadlocal为何内存泄漏
java
caridle39 分钟前
教程:使用 InterBase Express 访问数据库(五):TIBTransaction
java·数据库·express
^velpro^44 分钟前
数据库连接池的创建
java·开发语言·数据库
苹果醋31 小时前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
秋の花1 小时前
【JAVA基础】Java集合基础
java·开发语言·windows
小松学前端1 小时前
第六章 7.0 LinkList
java·开发语言·网络
Wx-bishekaifayuan1 小时前
django电商易购系统-计算机设计毕业源码61059
java·spring boot·spring·spring cloud·django·sqlite·guava
customer081 小时前
【开源免费】基于SpringBoot+Vue.JS周边产品销售网站(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·java-ee·开源
全栈开发圈1 小时前
新书速览|Java网络爬虫精解与实践
java·开发语言·爬虫