Java 23种设计模式分类概括以及应用介绍

创建型模式:5种

单例模式(Singleton Pattern)
思想:确保一个类只有一个实例,并提供全局访问点,它的主要目的是限制类的实例化并确保所有代码都共享相同的实例。
应用:Runtime类、数据库连接池、Spring创建的对象,日志工具比如SLF4J

工厂模式(Factory Pattern)
将对象的实例化过程封装在一个工厂类中。通过使用工厂方法,可以根据需要创建不同类型的对象,而无需暴露具体的实例化逻辑
应用:Spring框架中的BeanFactory和ApplicationContex。它们负责创建和管理对象的实例,并将对象的创建逻辑封装在工厂类中,客户端通过工厂类获取所需的对象实例。

抽象工厂模式(Abstract Factory Pattern)
抽象工厂模式提供了一种方式来创建一系列相关对象的接口,而无需指定具体的类
应用:JDBC API中的Connection接口和DriverManager类。Connection接口代表数据库连接对象的抽象,而DriverManager类充当了抽象工厂,负责创建特定数据库厂商的连接对象(比如Oracle、MySQL)

建造者模式(Builder Pattern)
用于创建复杂对象,通过将对象的构建过程分解为多个步骤,使得同样的构建过程可以创建不同的表示
应用:StringBuilder和StringBuffer类是建造者模式的示例,它们通过提供一系列方法来动态构建字符串对象,允许按照特定的顺序添加、修改和组装字符串

原型模式(Prototype Pattern)
创建对象的克隆,通过复制现有对象的属性来创建新的对象,而无需通过实例化来创建。它能够提供一种更高效、更灵活的对象创建方式
应用:Java的Cloneable接口 ,实现它就具备了原型模式的能力,clone()方法会创建并返回一个新的对象副本,该副本拥有与原始对象相同的属性值。

2. 结构型模式(Structural Patterns): 7种

适配器模式(Adapter Pattern)
(适配器类) 将一个类的接口转换成客户端所期望的另一个接口,使得原本由于接口不兼容而无法一起工作的类可以协同工作
应用:Arrays类(可以将数组适配为List接口),InputStreamReader(将字节流转为字符流)

桥接模式(Bridge Pattern)
将抽象部分与实现部分分离,使它们可以独立地变化
应用:JDBC,抽象部分表示数据库连接的抽象接口,实现部分表示不同数据库的具体实现,而桥接接口充当连接抽象和实现的桥梁

组合模式(Composite Pattern)
通过使用相同的接口来处理单个对象和组合对象,组合模式使得客户端可以一致地对待它们
应用:Swing框架中的组件,各种UI组件(如按钮、文本框等)都可以作为单个对象,也可以组合

装饰器模式(Decorator Pattern)
在不改变现有对象结构的情况下,动态地将新功能附加到对象上
应用:IO流的设计

外观模式(Facade Pattern)
为复杂子系统提供一个简化的接口,以便客户端能够更轻松地使用该系统
应用:URL类提供了一个简单的接口来处理URL的各种操作,隐藏了底层复杂的网络通信细节

享元模式(Flyweight Pattern)
通过共享对象来最大程度地减少内存使用和提高性能,通过创建一个工厂类来管理共享对象,并在需要时返回已存在的对象或创建新对象
应用:字符串常量池

代理模式(Proxy Pattern)
通过创建一个代理对象,控制对原始对象的访问。可以在访问原始对象之前或之后添加额外的逻辑,从而实现对原始对象的控制和扩展
应用:Java动态代理,允许在运行时动态地创建代理对象,以拦截并处理对代理对象方法的调用

行为型模式: 11种

  • 责任链模式(Chain of Responsibility Pattern)
  • 命令模式(Command Pattern)
  • 解释器模式(Interpreter Pattern)
  • 迭代器模式(Iterator Pattern)
  • 中介者模式(Mediator Pattern)
  • 备忘录模式(Memento Pattern)
  • 观察者模式(Observer Pattern)
  • 状态模式(State Pattern)
  • 策略模式(Strategy Pattern)
  • 模板方法模式(Template Method Pattern)
  • 访问者模式(Visitor Pattern)

你可能感兴趣的:(Java学习,java,设计模式,开发语言)