设计模式
1.工厂设计模式(设计模式-工厂模式(简单工厂、工厂方法、抽象工厂)简单工厂模式 简单工厂模式是指由一个工厂对象决定常见出哪一种产品类的实 - 掘金)
2.单例设计模式
3.代理设计模式(AOP)
AOP(Aspect-Oriented Programming,面向切面编程) 能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。
4.观察者模式(华为面试官:手写一个观察者模式面试官:观察者模式在面向对象的语言中很常见。前端手写一个观察者模式。文章先以易于理解版介绍 - 掘金)
观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。
观察者模式结构图

在观察者模式中有如下角色:
- Subject:抽象主题(抽象被观察者),抽象主题角色把所有观察者对象保存在一个集合里,每个主题都可以有任意数量的观察者,抽象主题提供一个接口,可以增加和删除观察者对象。
- ConcreteSubject:具体主题(具体被观察者),该角色将有关状态存入具体观察者对象,在具体主题的内部状态发生改变时,给所有注册过的观察者发送通知。
- Observer:抽象观察者,是观察者者的抽象类,它定义了一个更新接口,使得在得到主题更改通知时更新自己。
- ConcrereObserver:具体观察者,实现抽象观察者定义的更新接口,以便在得到主题更改通知时更新自身的状态。
5.装饰者模式(JS设计模式之装饰者模式:优雅的给对象增添“魔法”装饰者模式(Decorator Pattern)是一种结构型设计模式, - 掘金)
装饰者模式可以动态地给对象添加一些额外的属性或行为。相比于使用继承,装饰者模式更加灵活。简单点儿说就是当我们需要修改原有的功能,但我们又不愿直接去修改原有的代码时,设计一个 Decorator 套在原有代码外面。其实在 JDK 中就有很多地方用到了装饰者模式,比如 InputStream家族,InputStream 类下有 FileInputStream (读取文件)、BufferedInputStream (增加缓存,使读取文件速度大大提升)等子类都在不修改InputStream 代码的情况下扩展了它的功能。
继承是在编译时(compile-time)静态地给一个类增加功能,而装饰者模式是在运行时(run-time)动态地给一个对象增加功能。
装饰者模式可以减少类的创建:
5.1通过继承
1 | |
问题:
3 种功能需要 7 个子类;如果有 5 种功能,则需要 2^5 - 1 = 31 个子类!这就是“类爆炸”。
5.2通过装饰者模式实现
只需为每个功能定义一个装饰类,通过组合实现任意功能嵌套:
1 | |
使用时动态组合:
1 | |
优势:
- 3 种功能只需 3 个装饰类(而非 7 个子类)。
- 5 种功能只需 5 个装饰类(而非 31 个子类)。
- 新增功能时(如加蜂蜜),只需加一个
HoneyDecorator,而不是为所有组合创建子类。

6.策略模式(一文搞懂策略模式(优化策略模式完全消除if else)-CSDN博客)
7.责任链模式(Java 实现责任链模式 + 策略模式:优雅处理多级请求的方式一、什么是责任链模式? 责任链模式(Chain of Re - 掘金)
8.代理模式和装饰者模式的区别(面试官问:代理模式和装饰者模式有啥区别_装饰者模式和代理模式的区别-CSDN博客)
高频面试点
示例代码
易错点
总结
设计模式
https://kyy-logs.github.io/2026/04/09/语言/java/设计模式/