【软考-系统架构设计师】设计模式三大类型解析

在这里插入图片描述


设计模式三大类型深度解析

一、创建型模式(Creational Patterns)

核心目标:解耦对象的创建与使用过程,提供灵活的对象生成机制,降低系统对具体类的依赖。
适用场景:需要动态创建对象、隐藏对象创建细节或优化资源复用率的场景。

1. 单例模式(Singleton)

  • 定义:确保一个类仅有一个实例,并提供全局访问点。
  • 实现方式:饿汉式(类加载时初始化)、懒汉式(延迟加载)、双重校验锁(线程安全)等 。
  • 应用案例:全局配置管理、数据库连接池、日志处理器。

2. 工厂方法模式(Factory Method)

  • 定义:定义一个创建对象的接口,由子类决定实例化的具体类。
  • 优势:支持扩展(新增产品只需增加子类),符合开闭原则 。
  • 典型应用:日志记录器(文件日志、数据库日志)、UI组件生成。

3. 抽象工厂模式(Abstract Factory)

  • 定义:提供一个接口,用于创建相关或依赖对象的家族,而无需指定具体类。
  • 场景:跨平台UI库(如Windows/Mac风格的按钮、文本框统一生成)。

4. 建造者模式(Builder)

  • 定义:将复杂对象的构建与其表示分离,使同样的构建过程可创建不同形式的产品。
  • 特点:分步构造、支持链式调用,适用于多参数对象(如HTTP请求配置)。

5. 原型模式(Prototype)

  • 定义:通过复制现有实例创建新对象,避免重复初始化开销。
  • 实现:实现Cloneable接口,深拷贝与浅拷贝需区分 。
  • 应用场景:游戏中的角色复制、文档模板生成。

二、结构型模式(Structural Patterns)

核心目标:通过组合类或对象形成更大结构,提升系统灵活性和可维护性。
适用场景:需要简化对象间关系、扩展功能或优化资源使用的场景。

1. 适配器模式(Adapter)

  • 定义:将一个类的接口转换为客户端期望的另一个接口,解决接口不兼容问题。
  • 类型:类适配器(继承)、对象适配器(组合)。
  • 案例:旧系统接口兼容(如将XML数据接口适配为JSON格式)。

2. 桥接模式(Bridge)

  • 定义:将抽象部分与实现部分分离,使两者可独立变化。
  • 优势:避免多层继承导致的类爆炸,支持多维度扩展(如形状与颜色的组合)。

3. 装饰模式(Decorator)

  • 定义:动态地为对象添加额外职责,替代继承扩展功能。
  • 应用:Java I/O流(BufferedReader装饰FileReader)、GUI组件增强。

4. 组合模式(Composite)

  • 定义:将对象组合成树形结构以表示“部分-整体”层次,使客户端统一处理单个对象和组合对象。
  • 典型场景:文件系统目录结构、菜单树管理。

5. 代理模式(Proxy)

  • 定义:为其他对象提供代理以控制访问,常见类型包括虚拟代理(延迟加载)、保护代理(权限控制)和远程代理(网络通信)。
  • 案例:Spring AOP中的动态代理、图片懒加载。

6. 享元模式(Flyweight)

  • 定义:通过共享技术减少大量细粒度对象的内存消耗。
  • 实现:分离内部状态(共享)与外部状态(非共享),如字符池、线程池。

三、行为型模式(Behavioral Patterns)

核心目标:优化对象间的通信与职责分配,增强系统行为的灵活性和可扩展性。
适用场景:需要管理复杂交互逻辑、动态调整行为或实现松耦合的场景。

1. 观察者模式(Observer)

  • 定义:定义对象间的一对多依赖关系,当一个对象状态改变时,所有依赖对象自动收到通知并更新。
  • 实现:Java中的java.util.Observable、事件监听机制。

2. 策略模式(Strategy)

  • 定义:封装一组算法,使其可互相替换,算法变化独立于客户端。
  • 优势:避免多重条件判断,支持动态切换(如支付方式选择)。

3. 模板方法模式(Template Method)

  • 定义:在父类中定义算法骨架,将某些步骤延迟到子类实现。
  • 应用:框架设计(如Spring的JdbcTemplate)、业务流程标准化。

4. 状态模式(State)

  • 定义:允许对象在其内部状态改变时改变行为,对象表现得像改变了类。
  • 案例:订单状态流转(待支付、已发货、已完成)。

5. 责任链模式(Chain of Responsibility)

  • 定义:将请求沿处理链传递,直到有对象处理它。
  • 场景:审批流程、异常处理链。

6. 命令模式(Command)

  • 定义:将请求封装为对象,支持请求的排队、记录、撤销等操作。
  • 应用:GUI按钮操作、事务回滚机制。

总结与对比

类别核心关注点典型模式设计原则体现
创建型模式对象创建的灵活性与解耦单例、工厂方法、抽象工厂单一职责、开闭原则
结构型模式类与对象的组合与结构优化适配器、桥接、装饰合成复用、接口隔离
行为型模式对象间的交互与职责分配观察者、策略、模板方法依赖倒置、里氏替换

设计原则关联

  • 单一职责原则:工厂方法模式将对象创建职责分离。
  • 开闭原则:策略模式通过扩展新算法而非修改现有代码实现功能增强。
  • 合成复用原则:组合模式通过对象组合而非继承构建层次结构。

通过合理运用这三大类设计模式,能够构建高内聚、低耦合的软件系统,有效应对需求变化与系统扩展的挑战。具体模式的选择需结合业务场景与系统目标,避免过度设计。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值