当前位置: 首页 > news >正文

市面上常用的23种设计模式,分析实现方式以及实际使用场景案例

粗略介绍一遍设计模式,后续会在这个帖子更新设计模式案例场景,java

一、创建型模式(5种)

单例模式详解(Singleton)
实现:通过私有化构造函数、静态方法提供唯一实例,支持饿汉式、双重检查锁、静态内部类等方式保证线程安全15。
场景:数据库连接池、日志管理器、全局配置类等需唯一实例的场景。

工厂方法模式(Factory Method)
实现:定义抽象工厂接口,子类决定实例化具体类(如 ConcreteProductA 和 ConcreteProductB)53。
场景:框架中对象的创建(如Spring的BeanFactory)、动态加载不同数据库驱动。

抽象工厂模式(Abstract Factory)
实现:创建产品族的接口(如 GUIFactory 生成 Button 和 TextBox),支持跨平台兼容36。
场景:跨平台UI组件库(如Java AWT)、游戏引擎中不同风格的资源包。

工厂方法模式和抽象工厂模式详解

建造者模式(Builder)
实现:分离复杂对象的构建与表示(如 AlertDialog.Builder),通过链式调用逐步组装对象36。
场景:创建复杂配置对象(如HTTP请求配置)、生成不同格式的文档(HTML/PDF)。

原型模式(Prototype)
实现:通过克隆现有对象创建新实例(如Java的 Cloneable 接口)36。
场景:游戏中的角色复制、避免重复初始化高成本对象(如数据库连接)。

二、结构型模式(7种)

适配器模式(Adapter)
实现:将不兼容接口转换为目标接口(如 Adapter 类包装 Adaptee)13。
场景:兼容旧系统接口、第三方库集成(如支付网关适配)。

桥接模式(Bridge)
实现:分离抽象与实现(如 Shape 抽象类与 DrawingAPI 接口解耦)36。
场景:跨平台图形渲染、消息通知渠道(短信/邮件/推送)的动态切换。

组合模式(Composite)
实现:树形结构统一处理叶子与容器节点(如文件系统目录与文件)36。
场景:UI组件嵌套(如菜单与子菜单)、组织架构管理。

装饰器模式(Decorator)
实现:动态添加职责(如 BufferedReader 包装 FileReader 增加缓冲功能)35。
场景:Java I/O流扩展、Web中间件链(如日志、鉴权装饰器)。

外观模式(Facade)
实现:提供子系统统一入口(如 PaymentFacade 封装支付、通知等操作)36。
场景:简化复杂API调用(如电商下单流程)、微服务网关。

享元模式(Flyweight)

实现:共享细粒度对象(如字符缓存池、线程池)36。
场景:游戏中的粒子特效、文本编辑器中的字符重复使用。

代理模式(Proxy)
实现:控制对象访问(如远程代理、延迟加载代理)35。
场景:Spring AOP事务管理、图片懒加载、VPN访问控制。

三、行为型模式(11种)

观察者模式(Observer)
实现:定义一对多依赖(如 Subject 维护 Observer 列表并通知更新)25。
场景:事件驱动系统(如按钮点击)、股票价格变动通知。

策略模式(Strategy)
实现:封装算法族并动态切换(如支付方式选择支付宝/微信)23。
场景:排序算法选择、优惠券计算规则(满减/折扣)。

模板方法模式(Template Method)
实现:定义算法骨架,子类重写步骤(如JUnit测试生命周期)23。
场景:工作流程标准化(如订单处理)、框架中的钩子方法。

责任链模式(Chain of Responsibility)
实现:请求沿处理链传递(如 FilterChain 处理HTTP请求)36。
场景:审批流程(如报销审批)、异常处理链。

命令模式(Command)
实现:封装请求为对象(如 Runnable 接口)36。
场景:撤销/重做操作、任务队列调度。

迭代器模式(Iterator)
实现:提供遍历聚合对象的方法(如Java集合的 Iterator)23。
场景:自定义集合遍历、数据库查询结果分页。

中介者模式(Mediator)
实现:集中管理对象交互(如聊天室协调用户消息)36。
场景:GUI组件通信、分布式系统中的协调服务。

备忘录模式(Memento)
实现:保存对象状态以便恢复(如游戏存档)36。
场景:事务回滚、文档编辑的历史记录。

状态模式(State)
实现:对象行为随状态改变(如订单状态流转)36。
场景:电梯运行状态、游戏角色行为切换。

访问者模式(Visitor)
实现:解耦数据结构与操作(如 Element 接受 Visitor 访问)36。
场景:编译器语法树分析、报表生成器。

解释器模式(Interpreter)
实现:定义语法规则并解释(如正则表达式引擎)36。
场景:SQL解析、数学公式计算。

四、设计模式的核心价值

解耦与复用:通过抽象接口隔离变化(如工厂模式隐藏对象创建细节)36。
扩展性:新增功能无需修改原有代码(如装饰器模式动态扩展)35。
可维护性:通过模式规范代码结构(如观察者模式简化事件通知逻辑)25。


http://www.mrgr.cn/news/94727.html

相关文章:

  • Centos离线安装openssl-devel
  • 自探索大语言模型微调(一)
  • VSTO(C#)Excel开发8:打包发布安装卸载
  • 守护中国软件供应链安全,未名湖畔的筑梦人
  • Redis--Zset类型
  • 本地部署Spark集群
  • 【AIGC】OpenAI 集成 Langchain 操作实战使用详解
  • Ubuntu从源码安装Webots
  • MySQL 8.4.X 企业版TDE加密功能 测试和验证
  • 手写一些常见算法
  • 使用Python在Word中生成多种不同类型的图表
  • SQL Server表数据变更捕获的5种方法及实战对比
  • Centos离线安装perl
  • 类和对象C++ (未完:对象特征)
  • RISC-V汇编学习(三)—— RV指令集
  • 第八节:红黑树(初阶)
  • 数据结构------线性表(顺序表)
  • 【极光 Orbit·STC8x】05. GPIO库函数驱动LED流动
  • 经历过的IDEA+Maven+JDK一些困惑
  • Python学习第十九天