news 2026/5/27 6:41:58

java设计模式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
java设计模式

文章目录

  • 1. 设计模式分类
  • 2. 创建型模式
      • 1)单例模式
      • 2)原型模式
      • 3)工厂模式
      • 4)抽象工厂模式
      • 5)建造者模式
  • 3. 结构型模式
      • 1)适配器模式
      • 2)桥接模式
      • 3)组合模式
      • 4)装饰者模式
      • 5)外观模式
      • 6)享元模式
      • 7)代理模式
  • 4. 行为型模式
      • 1)迭代器模式
      • 2)解释器模式
      • 3)观察者模式
      • 4)中介者模式
      • 5)访问者模式
      • 6)备忘录模式
      • 7)状态模式
      • 8)策略模式
      • 9)命令模式
      • 10)模板方法模式
      • 11)责任链模式
  • 5. 设计模式的原则
      • 1)单一职责原则
      • 2)开闭原则
      • 3)里氏替换原则
      • 4)接口隔离原则
      • 5)依赖倒置原则
      • 6)迪米特法则(最少知识原则)
      • 7)合成复用原则

1. 设计模式分类

设计模式一共有23种, 创建型模式:5种,核心目标:解耦对象创建的过程。 结构型模式:7种,核心目标:优化对象与类的组合结构。 行为型模式:11种,核心目标:优化对象间的通信与职责分配。

2. 创建型模式

1)单例模式

1. 目标:保证一个类只有一个实例,并提供一个访问它的全局访问点。 2. 场景:数据库连接池、配置管理。 3. 类型写法:8种 1)饿汉式--静态常量 2)饿汉式--静态代码块 3)懒汉式--线程不安全 4)懒汉式--同步方法(线程安全) 5)懒汉式--同步代码块(线程安全) 6)双重检查 7)静态内部类 8)枚举

2)原型模式

1. 目标:给出个原型,通过复制创建更多同类型的对象。

3)工厂模式

特点:一个接口有多个实现,通过工厂来创建出需要的实现。 目标:将对象创建延迟到子类,避免客户端直接依赖具体类。 场景:需要根据不同的条件动态创建不同的对象。

4)抽象工厂模式

目标:创建一组相关或依赖的对象族。 场景:跨平台 UI 组件库(如不同操作系统的按钮、文本框)。

5)建造者模式

目标:使用多个简单的对象,一步步的构建成一个复杂的对象,避免构造器参数爆炸。 场景:创建包含多个可选参数的对象(如订单、配置)。

3. 结构型模式

1)适配器模式

目标:通过使用适配器重写目标接口,将一个类的某个接口(目标接口)转换成客户希望的另外一个接口,类似于 数据转化功能,将不兼容的接口转换为客户端期望的接口。 场景:整合第三方库或遗留代码。

2)桥接模式

特点:将抽象部分和实现部分分离,使他们都可以独立的变化,把两个角色之间的继承关系变成了耦合关系。

3)组合模式

4)装饰者模式

特点:对已有的业务逻辑进行一定的封装,在不改变原有结构的前提下,增加一些其他新的功能。 目标:动态的为对象添加职责,避免子类膨胀。 场景:Java I/O 流(如 BufferedInputStream 装饰 FileInputStream)。

5)外观模式

6)享元模式

特点:以共享的模式来避免相同内容对象的开销。

7)代理模式

特点:创建一个代理对象,和实际对象一样去实现某个接口,并在代理对象类中引用实际对象,去实现某些功能,也可对原有的功能进行增强。 目标:控制对对象的访问(延迟加载、权限控制等)或者添加某些功能。 场景:Spring AOP 动态代理、远程方法调用(RMI)。

4. 行为型模式

1)迭代器模式

特点:使用迭代器顺序访问集合中的每一个元素,不需要知道集合对象的底层展示。

2)解释器模式

3)观察者模式

特点:定义了一种一对多的依赖关系,让多个观察者同时监听某一个主题对象,当这个主题对象的状态发生变化时,会通知所有的观察者对象,使他们能够自动更新自己。

4)中介者模式

5)访问者模式

6)备忘录模式

特点:用来存储另外一个对象内部状态的快照的对象。

7)状态模式

特点:允许一个对象在其内部状态变化时,改变其行为。

8)策略模式

特点:将多个算法封装到具有共同接口的多个实现类中,使得一个接口可以实现不同的功能,类似于一个接口的多个不同实现。 场景:支付方式选择(支付宝、微信、银行卡)。

9)命令模式

特点:将一个命令封装成一个对象,可以对命令接受者进行不同的命令处理。

10)模板方法模式

目标:定义算法骨架,允许子类重写某些步骤。 场景:Servlet 生命周期(init(), service(), destroy())。

11)责任链模式

5. 设计模式的原则

1)单一职责原则

一个类只负责一个功能。

2)开闭原则

对扩展开发,对修改关闭。

3)里氏替换原则

任何基类可以出现的地方,子类一定也可以出现。 子类应能替换父类且不影响程序逻辑。

4)接口隔离原则

使用多个隔离的接口,比使用一个接口要好。 客户端不应依赖它不需要的接口。

5)依赖倒置原则

应该针对接口编程,依赖于抽象而不依赖于具体。

6)迪米特法则(最少知识原则)

一个实体应该尽量少的与其他实体发生相互作用。

7)合成复用原则

尽量使用合成、聚合,而不是使用继承。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/27 6:41:57

从一次线上故障复盘:C# HttpClient 连接池耗尽和 DNS 缓存踩坑实录

深度剖析C# HttpClient连接池耗尽与DNS缓存失效的实战解决方案 当你的.NET服务突然出现大面积请求失败时,系统日志里那些"SocketException"和"HttpRequestException"就像一场噩梦的开始。去年我们团队就经历过这样一次线上事故——一个稳定运行…

作者头像 李华
网站建设 2026/5/27 6:40:55

FastAPI数据库连接池:实现配置

FastAPI数据库连接池:实现配置 【免费下载链接】fastapi FastAPI framework, high performance, easy to learn, fast to code, ready for production 项目地址: https://gitcode.com/GitHub_Trending/fa/fastapi FastAPI作为一款高性能、易学习的现代Python…

作者头像 李华
网站建设 2026/5/27 6:40:15

Electron多窗口开发实战:从创建到通信的全流程解析

1. Electron多窗口开发入门指南 用JavaScript开发桌面应用听起来像天方夜谭?Electron让这成为现实。作为GitHub开源的跨平台框架,它把Chromium和Node.js打包在一起,让你能用前端技术栈构建Windows、macOS和Linux应用。我2016年第一次接触Elec…

作者头像 李华
网站建设 2026/4/1 4:37:35

SAP SM58报错别慌!手把手教你写个ABAP程序自动重启RFC任务

SAP SM58报错自动化处理:ABAP程序开发实战指南 当SM58事务码中堆积了数百条RFC失败任务时,手动逐条处理不仅效率低下,还容易遗漏关键错误。作为有十年SAP系统维护经验的开发者,我想分享一个经过生产环境验证的自动化解决方案——通…

作者头像 李华