我正在处理以下用例。
现在我可以用两种方式设计它
根据SRP(单一责任原则),与SOLID原则一样,我认为我们有3个职责,即创建用户,删除用户和更新用户,因此我们需要3个类,如上面第2点所述。
请建议好的设计应该是什么 - 设计#1还是设计#2。
答案 0 :(得分:4)
定义责任的内容的问题是众所周知的。罗伯特马丁建议解释它like this:
单一责任原则(SRP)规定每个软件模块应该只有一个改变的原因
以及(同一链接):
当您编写软件模块时,您希望确保在请求更改时,这些更改只能来自一个人,或者更确切地说,一个紧密耦合的人群代表一个狭义的业务功能。< / p>
在您的示例中,业务要求中的更改最多只涉及用户实体,而不是如何根据实施细节进行管理。重要的观点是你的应用程序为人使用它做什么,而不是它是如何做到的。这就是我推荐第一种方法的原因。常用的模式称为The Repository。