以下是常用的23种设计模式的分类统计和应用场景解释:
创建型模式(5种)
| 模式名称 |
核心思想 |
应用场景 |
| 单例模式 |
确保类只有一个实例 |
配置管理、线程池、数据库连接池等需要全局唯一实例的场景。 |
| 工厂方法模式 |
定义创建对象的接口 |
不同条件下创建不同类型的对象,如游戏中根据关卡创建不同敌人。 |
| 抽象工厂模式 |
创建一系列相关对象 |
生产具有多个部件的产品,如汽车工厂同时生产发动机、轮胎等部件。 |
| 建造者模式 |
分步构建复杂对象 |
组装电脑、构建SQL查询语句等需要多个步骤创建对象的场景。 |
| 原型模式 |
通过复制现有实例创建对象 |
资源密集型对象的复制,如大型文档或图形对象的克隆。 |
结构型模式(7种)
| 模式名称 |
核心思想 |
应用场景 |
| 代理模式 |
通过代理控制对对象的访问 |
远程代理(如RPC)、虚拟代理(延迟加载)、保护代理(权限控制)。 |
| 适配器模式 |
转换接口使不兼容的类协作 |
旧系统接口适配新系统、第三方库接口转换。 |
| 装饰器模式 |
动态添加对象功能 |
给文本框添加边框、滚动条等装饰功能,或给方法添加日志、缓存等功能。 |
| 外观模式 |
提供简化的统一接口 |
复杂系统的高层接口封装,如电商系统的订单处理Facade。 |
| 桥接模式 |
分离抽象与实现 |
实现与平台无关的图形绘制系统、跨数据库的ORM框架。 |
| 组合模式 |
树形结构处理对象 |
文件系统、组织架构、菜单系统等树形结构的处理。 |
| 享元模式 |
共享重用细粒度对象 |
文本编辑器中的字符对象共享、游戏中的粒子系统优化。 |
行为型模式(11种)
| 模式名称 |
核心思想 |
应用场景 |
| 观察者模式 |
一对多依赖关系 |
事件监听(如GUI事件)、发布-订阅系统、状态变化通知。 |
| 策略模式 |
定义算法族并可互换 |
支付方式选择、排序算法切换、压缩算法选择。 |
| 模板方法模式 |
定义算法骨架 |
数据库访问模板、测试用例框架、Servlet生命周期管理。 |
| 责任链模式 |
动态传递请求处理者 |
审批流程、日志处理链、过滤器链。 |
| 命令模式 |
将请求封装为对象 |
撤销操作(如编辑器的撤销功能)、任务队列、远程控制。 |
| 状态模式 |
对象状态决定行为 |
工作流引擎、游戏角色状态管理、电梯控制系统。 |
| 中介者模式 |
通过中介者集中交互 |
聊天室、MVC框架中的Controller、机场塔台调度系统。 |
| 迭代器模式 |
顺序访问集合元素 |
遍历不同类型的集合(如数组、链表、树),Java的Iterator接口。 |
| 访问者模式 |
分离数据结构与操作 |
编译器语法树处理、报表生成器、XML解析器。 |
| 备忘录模式 |
保存和恢复对象状态 |
游戏存档、编辑器撤销功能、数据库事务回滚。 |
| 解释器模式 |
定义语言语法和解释器 |
SQL解析、正则表达式引擎、数学表达式计算。 |
这些设计模式是软件开发中解决常见问题的经典方案,理解它们的核心思想和应用场景有助于编写更具可维护性和可扩展性的代码。