设计用户相关的类

时间:2014-08-25 07:38:26

标签: java solid-principles single-responsibility-principle

我正在处理以下用例。

  1. 创建用户
  2. 删除用户
  3. 更新用户
  4. 现在我可以用两种方式设计它

    1. 设计#1 - 创建UserOperations类 - >共有3种方法,每种方法用于创建,删除和更新用户。
    2. 设计#2 - 创建3个类 - > CreateUser类,DeleteUser类和UpdateUser类。
    3. 根据SRP(单一责任原则),与SOLID原则一样,我认为我们有3个职责,即创建用户,删除用户和更新用户,因此我们需要3个类,如上面第2点所述。

      请建议好的设计应该是什么 - 设计#1还是设计#2。

1 个答案:

答案 0 :(得分:4)

定义责任的内容的问题是众所周知的。罗伯特马丁建议解释它like this

  

单一责任原则(SRP)规定每个软件模块应该只有一个改变的原因

以及(同一链接):

  

当您编写软件模块时,您希望确保在请求更改时,这些更改只能来自一个人,或者更确切地说,一个紧密耦合的人群代表一个狭义的业务功能。< / p>

在您的示例中,业务要求中的更改最多只涉及用户实体,而不是如何根据实施细节进行管理。重要的观点是你的应用程序为使用它做什么,而不是它是如何做到的。这就是我推荐第一种方法的原因。常用的模式称为The Repository