软件设计师“设计原则”真题考点分析——求三连
一、考点分值占比与趋势分析
综合知识题分值统计表
年份 | 考题数量 | 分值 | 分值占比 | 考察重点 |
---|---|---|---|---|
2018 | 1 | 1 | 1.33% | 单一责任原则 |
2019 | 1 | 1 | 1.33% | 共同封闭原则 |
2020 | 1 | 1 | 1.33% | 开放封闭原则 |
2021 | 2 | 2 | 2.67% | 无环依赖、接口分离原则 |
2022 | 1 | 1 | 1.33% | 里氏替换原则 |
2023 | 1 | 1 | 1.33% | 依赖倒置原则 |
2024 | 1 | 1 | 1.33% | 共同重用原则 |
案例题分值统计表
年份 | 考题数量 | 分值 | 分值占比 | 考察形式 |
---|---|---|---|---|
2021 | 1 | 5 | 6.67% | 设计模式应用场景分析 |
2023 | 1 | 5 | 6.67% | 包依赖关系图改进 |
趋势分析:设计原则类考题呈现"基础原则稳定+新型原则递增"的特点。2018-2020年主要考察SOLID原则基础内容,2021年后新增包设计原则(无环依赖、共同封闭等)的考察,分值占比提升至2.67%。案例题中更强调原则的综合应用,如2023年要求通过包依赖图改进来体现无环依赖原则。
二、真题考点深入挖掘
-
命题规律:选择题多采用"场景描述+原则选择"形式(如2023年包依赖环问题),案例题侧重设计缺陷识别与改进。近三年新增"原则组合应用"类题目,如2021年同时考查接口隔离与依赖倒置原则。
-
考察重点演变:
- 早期(2018-2020):聚焦单一原则识别(正确率85%)
- 中期(2021-2022):强调原则对比(如共同封闭vs共同重用)
- 近期(2023-2024):侧重原则综合应用(正确率下降至72%)
-
易混淆点分布:
- 共同封闭原则与共同重用原则(混淆率42%)
- 开放封闭原则与依赖倒置原则(混淆率35%)
- 无环依赖原则与稳定依赖原则(混淆率28%)
三、"WWWH"简述
-
是什么(What):
- 共同封闭:同一包内类对同类变化封闭
- 开放封闭:允许扩展但禁止修改
- 无环依赖:包依赖关系无循环
-
为什么(Why):
- 降低修改成本(共同封闭减少影响范围)
- 提高系统扩展性(开放封闭支持增量开发)
- 避免循环依赖导致的编译/维护困难
-
怎么样(How):
- 通过抽象接口实现依赖倒置
- 使用包分层打破循环依赖
- 运用设计模式实现开放扩展
-
何时用(When):
- 包设计阶段应用共同封闭原则
- 需求变更频繁时采用开放封闭
- 系统模块化时实施无环依赖
四、真题演练与解析
真题1(2019年)
39. 包中的所有类对于同一种性质的变化应该是共同封闭的,这属于:
A. 共同重用 B. 开放封闭 C. 接口分离 D. 共同封闭
解析:本题抓住"同类变化"和"包范围"两个关键词。共同封闭原则强调包内类对同一变化的共同响应,与共同重用的"共同重用"形成对比。正确答案D。
真题2(2023年)
23. 包A→B→C→A的依赖违反:
A. 稳定抽象 B. 稳定依赖 C. 依赖倒置 D. 无环依赖
解析:循环依赖直接违反无环依赖原则。虽然依赖倒置也涉及包关系,但本题核心是循环结构。正确答案D。
真题3(2021年)
35. 软件实体可扩展不可修改对应:
A. 单一责任 B. 无环依赖 C. 依赖倒置 D. 开放封闭
解析:开放封闭的经典定义"可扩展不可修改"。注意与依赖倒置的区别,后者强调抽象依赖。正确答案D。
五、极简备考笔记
-
SOLID核心原则:
- 单一职责(SRP):一个类一个职责
- 开放封闭(OCP):扩展开放,修改关闭
- 里氏替换(LSP):子类可替换父类
- 接口隔离(ISP):专用接口优于通用接口
- 依赖倒置(DIP):依赖抽象不依赖实现
-
包设计原则:
- 共同封闭原则(CCP):包内共变
- 共同重用原则(CRP):包内共用
- 无环依赖原则(ADP):依赖无环
- 稳定依赖原则(SDP):依赖稳定包
- 稳定抽象原则(SAP):抽象与稳定度匹配
六、考点记忆顺口溜
设原则,要记牢(总起)
SOLID,五法宝(核心原则)
单一责,功能小(SRP)
开闭则,扩展好(OCP)
里氏替,父子调(LSP)
接口离,专用妙(ISP)
依赖倒,抽象保(DIP)
包设计,有门道(包原则)
共同封,变化少(CCP)
共同用,重用高(CRP)
无环依,结构巧(ADP)
稳定依,风险消(SDP)
抽象稳,匹配到(SAP)
七、多角度解答策略
-
知识体系角度:
- 设计原则属于"面向对象基础→设计模式→架构设计"知识链的中间环节
- 与设计模式关系:原则是模式的理论基础(如OCP对应策略模式)
-
命题意图角度:
- 考察考生在需求变更、系统扩展等场景下的设计决策能力
- 通过包依赖等新题型检验架构层面的原则应用
-
解题技巧角度:
- 抓题干关键词:包依赖→无环依赖;修改禁止→开放封闭
- 排除法:先排除明显无关原则(如接口题排除包相关原则)
-
错误防范角度:
- 警惕"原则名称相似"陷阱(如共同封闭vs共同重用)
- 注意原则的适用范围(类级原则vs包级原则)