软件设计师 · 设计原则 · 设计模式

软件设计师设计原则和设计模式怎么复习?

设计原则和设计模式经常一起出现,但它们不是一回事。原则更像设计方向,模式更像成熟解法。原则告诉你为什么要这么设计,模式告诉你可以怎么组织类和对象。

软件设计师专题 软考题库编辑部 持续更新

先分清原则和模式

单一职责、开闭原则、依赖倒置这些属于设计原则,它们通常在问代码结构应该朝什么方向优化。工厂方法、策略、观察者、模板方法这些属于设计模式,它们通常在问某类场景可以用什么成熟结构解决。

如果题干强调“对扩展开放、对修改关闭”,优先想到开闭原则;如果题干强调“不同算法可以切换”,更像策略模式;如果题干强调“定义算法骨架,子类实现部分步骤”,更像模板方法。

题干信号更可能对应一句话判断
一个类承担太多职责单一职责原则类的职责要清楚
新增功能尽量不改旧代码开闭原则扩展优先于修改
高层模块不依赖具体实现依赖倒置原则面向抽象编程
一组算法可替换策略模式把算法封装起来切换
一对多通知观察者模式状态变化通知依赖对象

模式题不要只背类图

类图当然重要,但选择题和案例题更常考模式意图。比如工厂方法不是单纯多一个工厂类,而是把对象创建延迟到子类;抽象工厂强调创建一组相关产品;策略模式强调算法可替换。

老师一般会提醒:模式名背对了只是第一步,真正得分靠场景对得上。场景不对,类图画得再熟也容易选错。

把原则和模式放回代码维护场景

设计原则和模式最终都服务于可维护性。考试如果说“需求变化频繁”“新增类型不希望修改原有代码”“多个算法之间切换”“对象状态变化要通知多个对象”,这些都不是随便描述,它们就是模式选择的信号。

复习时建议每个模式都准备一个真实小例子。比如促销算法适合策略模式,文件解析流程适合模板方法,订阅通知适合观察者。例子越具体,越不容易背混。

相关题目解析

下面这些题目和本专题的判断方法关联较强,适合读完概念后回到具体题干里校验理解。