【发布时间】:2014-11-10 17:30:32
【问题描述】:
我已经阅读了几本书并听过有关软件设计的讲座。 但是我不知道如何解决遵循 OO 设计原则引起的问题。
这里有一些情况。 我开始设计简单的单类(ClassA)。 之后,ClassA 也肩负着类似的责任。 根据单一职责原则,我从 ClassA 到 ClassB 中提取了一些逻辑。 ClassA 再次变得足够简单。 但是,ClassA 的职责可能与 ClassB 的职责相似, 使 ClassA 和 ClassB 有相互引用作为成员字段或属性进行合作。 换句话说,类的分离产生了另一种复杂性。那是单独的类之间的交互。 从那以后,ClassA 和 ClassB 中的每一个都可能带着更复杂的责任成长起来, 并且某些类(ClassC 或 ClassD)可能与 ClassA 或 ClassB 分开。 现在,类之间的交互变得更加复杂。 每个类都可以引用其他类作为成员字段或方法参数。
随着单个类变得更简单,类的数量增加,类之间的关系和交互的复杂性也增加。
在某些幸运的情况下,它可以通过设计模式来解决。 然而,在许多情况下,类的分离使类的关系更加复杂。 并倾向于生成对其他类作为成员的引用过多的类。 一个类有太多对其他类的引用作为成员是很难测试的。
我已经阅读了几本 OO 设计书籍。他们中的大多数人都说简单的课程很好。 然而,它们都没有关注由 SRP 引起的类交互的复杂性。
我错过了什么吗? 我该如何解决这个问题?
【问题讨论】:
-
一般来说,最好有更多的类,每个类都有单独的职责,而不是有更少的类,每个类都有复杂的职责。您所描述的情况是重构以维护 SRP 的常见结果。
标签: single-responsibility-principle