易混题先看对象和动作
比如聚合和组合都表示整体与部分,但组合更强调强生命周期依赖;适配器和代理都像是在中间包一层,但适配器解决接口不匹配,代理控制访问;语句覆盖和判定覆盖都属于白盒测试,但覆盖强度不同。
老师讲这类题时,常用两个问题拆开:它处理的对象是什么?它主要动作是什么?对象和动作对上了,选项就不容易混。
| 易混点 | 区分关键 | 典型题眼 |
|---|---|---|
| 聚合 vs 组合 | 生命周期依赖强弱 | 部分能否脱离整体存在 |
| 适配器 vs 代理 | 接口转换还是访问控制 | 接口不匹配、权限控制 |
| 策略 vs 模板方法 | 算法可替换还是算法骨架固定 | 运行时切换、步骤由父类控制 |
| 语句覆盖 vs 判定覆盖 | 执行语句还是覆盖分支结果 | 每条语句、真假分支 |
| WHERE vs HAVING | 分组前过滤还是分组后过滤 | GROUP BY、聚合函数 |
不要只背一个关键词
关键词能帮你定位方向,但不能替代判断。比如看到“通知”可能想到观察者模式,但还要看是不是一个对象变化后通知多个依赖对象;看到“工厂”也要区分简单工厂、工厂方法和抽象工厂。
考试选项有时会故意把关键词放进去,但场景不匹配。复习时要训练自己把“关键词 + 场景”一起看。
考前可以做一张自己的易混表
不要试图把所有概念都写进去,只写你自己真正会混的。比如你总分不清 include 和 extend,就专门写:include 是复用必然发生的公共行为,extend 是在条件下扩展基本用例。
这张表最好用自己的话写。能用自己的话讲出来,说明你已经从背定义走到会判断了。
相关题目解析
下面这些题目和本专题的判断方法关联较强,适合读完概念后回到具体题干里校验理解。
- UML 类图中聚合和组合有什么区别?UML 类图 / 聚合
- 装饰器模式和代理模式怎么区分?设计模式 / 装饰器模式
- 白盒测试中语句覆盖和判定覆盖有什么区别?白盒测试 / 语句覆盖
- 工厂方法模式和简单工厂有什么区别?工厂方法模式 / 简单工厂
- UML 用例图中 include 和 extend 怎么区分?UML / 用例图