软件设计师考试《综合知识》设计模式之——工厂模式与抽象工厂模式考点分析

软件设计师考试《综合知识》工厂模式与抽象工厂模式考点分析


在这里插入图片描述

1. 分值占比与考察趋势(75分制)
年份题量分值占总分比例核心考点
2023111.33%抽象工厂模式适用场景
2022222.67%工厂方法 vs 抽象工厂区别
2021111.33%工厂方法模式结构
2020111.33%简单工厂模式缺陷
2019111.33%抽象工厂模式优缺点

结论

  • 年均1.2题,分值1-2分(占比1.33%-2.67%)
  • 模式对比是绝对高频考点(占60%)
  • 简单工厂模式仅2020年考查1次

2. WWWH简述

What(是什么)

  • 工厂方法:定义创建对象的接口,让子类决定实例化哪个类
  • 抽象工厂:创建相关或依赖对象的家族,而无需指定具体类

Why(为什么)

  • 工厂方法:解决单一产品的扩展问题(如多种Logger)
  • 抽象工厂:解决产品族的兼容问题(如跨平台UI控件)

Where(用在哪)

模式典型应用场景
工厂方法日志系统、数据库连接池
抽象工厂跨平台UI库、游戏装备系统

How(怎么实现)

工厂方法
<> Creator
ConcreteCreatorA --> ConcreteProductA
+factoryMethod()
抽象工厂
<> AbstractFactory
ConcreteFactory1 --> ProductA1
ConcreteFactory1 --> ProductB1
+createProductA()
+createProductB()

3. 考点详解
(1)工厂方法模式

基础概念

  • 核心角色
    • Creator(抽象创建者)
    • ConcreteCreator(具体创建者,如FileLoggerFactory)
    • Product(抽象产品)

UML示例

«interface»
Logger
+log()
FileLogger
+log()
«abstract»
LoggerFactory
+createLogger()
FileLoggerFactory
+createLogger()

对比简单工厂

维度工厂方法模式简单工厂模式
扩展性✅ 符合开闭原则❌ 需修改工厂类
复杂度较高(需子类)低(集中判断)
(2)抽象工厂模式

关键名词

  • 产品族:功能相关的产品集合(如Mac按钮/文本框)
  • 产品等级:同一抽象产品的不同实现(如Button有Win/Mac版)

结构对比

特征工厂方法抽象工厂
创建目标单一产品产品族
接口方法1个factoryMethod多个create方法
新增产品易(加子类)难(改接口)

4. 历年真题演练

真题1(2023年·抽象工厂)

需要开发支持Windows和Linux双平台的终端模拟器,应采用( )。
A. 适配器模式
B. 抽象工厂模式
C. 原型模式
D. 装饰器模式
答案:B(需管理多平台终端控件族)

真题2(2022年·对比题)

关于两种工厂模式错误的是( )。
A. 工厂方法通过继承实现扩展
B. 抽象工厂通过组合增加产品族
C. 工厂方法适合创建关联对象族
D. 抽象工厂接口包含多个创建方法
答案:C(应为抽象工厂的特性)

真题3(2021年·工厂方法)

工厂方法模式中,ConcreteCreator的作用是( )。
A. 定义产品接口
B. 决定实例化哪个具体产品
C. 统一管理所有产品
D. 实现产品功能
答案:B(核心职责)


5. 极简备考笔记
(1)三句话区分
1. 工厂方法:一个工厂子类 → 生产一种产品(如MySQL连接器工厂)  
2. 抽象工厂:一个工厂子类 → 生产一套产品(如Mac控件工厂)  
3. 简单工厂:if-else集中生产 → 违反开闭原则
(2)高频考点速查
题干关键词正确答案典型错误选项
“多种数据库连接”工厂方法抽象工厂
“跨平台UI控件库”抽象工厂建造者模式
“动态新增日志类型”工厂方法简单工厂
(3)必背对比口诀
【工厂方法】  
子类工厂造单品,扩展只需新子类  
【抽象工厂】  
一套产品捆绑卖,新增产品要改接口
(4)2024年预测
  • Spring框架中的BeanFactory实现原理
  • 抽象工厂在微服务配置中心的应用

附:冲刺策略

① 重点掌握模式对比(50分钟):做近3年所有对比真题  
② 理解产品族概念(30分钟):通过UI库/游戏装备案例  
③ 放弃:简单工厂的代码实现(近年未考具体实现)  

:该考点易混淆,建议用"产品维度"(单一vs族)作为判断第一标准。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软考真题app

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值