知识卡片

拆分接口而非拆分实现类规避强耦合

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

内容

把违反[[单一职责原则的定义]]的接口拆开后,实现层面不必跟着拆成多个类再组合——组合关系 是强耦合,反而增加复杂度。更优做法是让一个类同时实现多个单一职责接口,对外始终面向接口 编程:需要读写属性就当BO接口用,需要触发行为就当业务接口用。发散:SRP拆分的单位是”接口 契约”而非”物理类”,类本身仍可保持完整。

参考来源

- 位置:《设计模式之禅(第2版)》第1章《单一职责原则》(源文件:_epub-src/text/part0005.html) - 结论依据:原文先展示把职责拆成两个独立类再组合的类图,随即指出"组合是一种强耦合关系……这样的强耦合关系还不如使用接口实现的方式呢,而且还增加了类的复杂性",转而采用一个类实现两个接口的方案。 - 原始内容:组合是一种强耦合关系,你和我都有共同的生命期,这样的强耦合关系还不如使用接口实现的方式呢,而且还增加了类的复杂性,多了两个类……这样的设计才是完美的,一个类实现了两个接口,把两个职责融合在一个类中。