违反单一责任原则何时合理?

时间:2011-07-29 14:48:21

标签: coding-style design-principles

在我们的java Web应用程序中重构了一些服务层类之后,我问自己,在哪一点上停止遵守单一责任原则(SRP)并保持代码的可维护性和可读性是合理的。现在我问你关于这个问题的经验。

示例:

假设UserManager类执行以下操作:

  1. 从数据库中查找用户
  2. 创建新用户
  3. 操纵现有用户
  4. 案例A:这三项职责中的每一项都由几种执行任务的方法组成。

    →我很清楚将它分为三类。

    案例B:这三项责任中的每一项都只包含一种方法。

    在这种情况下你会建议什么?这应该分成三个小类还是留在UserManager类中?

1 个答案:

答案 0 :(得分:4)

在我看来,与OOP相关的SRP意味着与特定对象或实体相关的状态和行为都应该在一个类中。因此,我的观点是,您希望将与用户相关的所有方法保留在一个类中,无论有多少方法或执行特定任务需要多少方法。

SRP(我认为)的目的是确保你没有域对象相互操纵。换句话说,如果你(假设)有另一个名为AccountManager的类,那么该类不应该有任何直接操作User对象的操作 - 因为这会违反SRP。相反,AccountManager类需要依赖UserManager类来处理任何/所有用户操作。