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

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

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


在这里插入图片描述

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族)作为判断第一标准。

相关文章:

  • 【HTML】个人博客页面
  • 【美团】后端一面复盘|项目驱动 + 手撕 + JVM + 数据库全面覆盖
  • QT 使用QPdfWriter和QPainter绘制PDF文件
  • Parsec解决PnP连接失败的问题
  • 11 web 自动化之 DDT 数据驱动详解
  • Swagger go中文版本手册
  • 【HCIA】策略路由
  • 搭建Hadoop集群standalone
  • STM32 SD卡拔插后FatFs挂载失败可能原因
  • 短视频二创App功能深度解析:短剧创作与推广的智能化革命
  • 开源模型应用落地-模型上下文协议(MCP)-Resources-资源的使用逻辑
  • Python中plotext 库详细使用(命令行界面中直接绘制各种图形)
  • 前馈神经网络回归(ANN Regression)从原理到实战
  • 从单线程到多线程:项目实战web Worker线程使用总结
  • 联合建模组织学和分子标记用于癌症分类|文献速递-深度学习医疗AI最新文献
  • 2025 后端自学UNIAPP【项目实战:旅游项目】5、个人中心页面:微信登录,同意授权,获取用户信息
  • 大模型智能体与 React Flow:构建智能化可视化交互系统的技术范式
  • Node.js 安装 + React Flow 快速入门:环境安装与项目搭建
  • #跟着若城学鸿蒙# 鸿蒙-卡证识别
  • 【搭建Node-RED + MQTT Broker实现AI大模型交互】
  • 侵害孩子者,必严惩不贷!3名性侵害未成年人罪犯今日执行死刑
  • 马上评|文玩字画竞拍轻松赚差价?严防这类新型传销
  • 马上评|清理“滥竽充数者”,为医者正名
  • 商务部回应美方加严限制中国芯片:敦促美方立即纠正错误做法
  • 《歌手2025》公布首发阵容,第一期就要淘汰一人
  • 外企聊营商|特雷通集团:税务服务“及时雨”