软件设计师考试《综合知识》创建型设计模式考点分析

发布于:2025-05-18 ⋅ 阅读:(22) ⋅ 点赞:(0)

软件设计师考试《综合知识》创建型设计模式考点分析


1. 分值占比与考察趋势(75分制)
模式名称 近5年题量 分值占比 高频考察点 最新趋势
抽象工厂模式 4 5.33% 产品族创建/跨平台应用 结合微服务配置考查(2023)
工厂方法模式 5 6.67% 单一产品扩展/日志系统 与IoC容器结合(2022)
单例模式 6 8% 线程安全实现/应用场景 双重检查锁优化(2023)
生成器模式 3 4% 复杂对象分步构建 与链式调用结合(2021)
原型模式 2 2.67% 深拷贝实现/性能优化 克隆与new的性能对比(2022)

结论

  1. 单例模式考频最高(年均1.2题),线程安全实现是重点
  2. 工厂相关模式合计占12%,侧重模式对比和适用场景
  3. 生成器/原型属于低频考点,但近3年均有考查
  4. 新趋势:设计模式与框架技术的结合应用(如Spring的Bean作用域)

2. WWWH简述
模式 What Why Where How
抽象工厂 创建产品家族 保证产品兼容性 跨平台UI/游戏装备系统 定义抽象接口,子工厂实现产品族
工厂方法 延迟实例化到子类 支持开闭原则扩展 日志系统/插件架构 父类定义接口,子类决定实例化
单例模式 确保类只有一个实例 全局访问点/资源节约 配置管理/线程池 私有构造+静态方法+线程安全控制
生成器模式 分步构建复杂对象 解耦构造过程与表示 XML解析/复杂表单生成 Director指挥Builder逐步构建
原型模式 克隆现有对象 避免重复初始化开销 游戏场景复制/缓存模板 实现Cloneable接口+重写clone()

3. 考点详解
(1)单例模式(最常考)

关键概念

  • 饿汉式:类加载即初始化(线程安全但可能浪费资源)
  • 懒汉式:首次调用时初始化(需同步控制)
// 双重检查锁实现(考点!)
public class Singleton {
    private volatile static Singleton instance;
    private Singleton() {}
    public static Singleton getInstance() {
        if (instance == null) {
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}

对比表

实现方式 线程安全 懒加载 性能 适用场景
饿汉式 最优 初始化耗时短的场景
同步方法懒汉式 不推荐使用
双重检查锁 较好 高频调用场景
静态内部类 标准实现方案
(2)工厂方法 vs 抽象工厂

初学者易混淆点

graph TD
    A[需要创建对象] --> B{产品数量?}
    B -->|单一产品| C[工厂方法]
    B -->|产品族| D[抽象工厂]
    C --> E[扩展方式:新增子类]
    D --> F[扩展方式:修改接口]
(3)生成器模式

经典结构

Director
+construct()
«interface»
Builder
+buildPartA()
+buildPartB()
ConcreteBuilder
+buildPartA()
+buildPartB()
+getResult()
(4)原型模式

深拷贝实现

class Prototype implements Cloneable {
    private List<String> data;
    
    @Override
    public Prototype clone() {
        Prototype copy = (Prototype)super.clone();
        copy.data = new ArrayList<>(this.data); // 关键点:集合对象也需拷贝
        return copy;
    }
}

4. 历年真题演练

真题1(2023·单例模式)

需要实现全局配置管理器,在多线程环境下既要保证线程安全又要避免同步开销,应使用( )。
A. 饿汉式单例
B. 同步方法懒汉式
C. 双重检查锁单例
D. 枚举单例
答案:C(兼顾线程安全与性能)

真题2(2022·生成器模式)

关于生成器模式错误的是( )。
A. 将复杂对象的构建与表示分离
B. 可以通过不同生成器创建不同表现对象
C. 适合创建简单不可变对象
D. Director控制构建过程
答案:C(应为复杂可变对象)

真题3(2021·原型模式)

原型模式通过clone()方法创建对象比直接new的优势是( )。
A. 避免执行构造函数
B. 节省初始化资源开销
C. 自动实现深拷贝
D. 保证线程安全
答案:B(核心优势是复用已有对象状态)


5. 极简备考笔记
(1)模式速记口诀
【单例】  
私有构造静态存,双重检查锁线程  
【工厂】  
单品用方法,家族抽象上  
【生成器】  
指挥者管步骤,建造者做零件  
【原型】  
克隆省资源,注意深拷贝
(2)高频考点对照表
题干关键词 对应模式 判断要点
“全局唯一”、“配置中心” 单例模式 强调实例唯一性
“跨平台控件”、“套装” 抽象工厂 产品族概念
“分步骤构建”、“链式调用” 生成器模式 构建过程复杂性
“对象拷贝”、“缓存模板” 原型模式 克隆现有对象
(3)2024年重点预测
  1. Spring框架中的设计模式应用(如Bean作用域与单例模式)
  2. 原型模式在对象池技术中的应用
  3. 生成器模式与Lombok的@Builder注解对比

附:冲刺时间分配建议

① 单例模式(60分钟):重点掌握4种实现方式的对比  
② 工厂系列(40分钟):通过UML图理解产品维度差异  
③ 生成器/原型(30分钟):各做2道真题掌握典型应用  
④ 放弃:创建型模式的混合使用场景(近5年仅考1次)  

:创建型模式占《设计模式》考点的35%,建议优先掌握单例和工厂系列。