知识卡片

识别隐藏多重职责的判断方法

普通读书笔记卡 · 1979.n.1.a

内容

判断接口是否违反[[单一职责原则的定义]],不能只数方法个数,要看方法的变化原因是否相互 独立。电话接口把dial/hangup(协议管理)和chat(数据传送)放一起,表面都是”打电话”,但 协议升级不影响数据格式,反之亦然——两个互不影响的变化原因混在一起,就是隐藏的多重职责。 发散:这个判断方法可迁移到任何”看似一件事、实际是两件独立变化”的接口场景。

参考来源

- 位置:《设计模式之禅(第2版)》第1章《单一职责原则》(源文件:_epub-src/text/part0005.html) - 结论依据:原文分析IPhone接口时明确指出dial/hangup实现协议管理、chat实现数据传送,并追问"协议接通的变化会引起这个接口变化吗?数据传送的变化会引起变化吗?"两者互不影响,因此判定为两个职责。 - 原始内容:IPhone这个接口可不是只有一个职责,它包含了两个职责:一个是协议管理,一个是数据传送……这两个职责会相互影响吗?电话拨号,我只要能接通就成,甭管是电信的还是网通的协议;电话连接后还关心传递的是什么数据吗?