如何运用单一责任原则 我试图理解C++中的设计原则。
在数据库中我有用户如何运用单一责任原则 我试图理解C++中的设计原则。,c++,c,single-responsibility-principle,C++,C,Single Responsibility Principle,在数据库中我有用户 users: id name age gender 我想通过三种方式获得我的用户 第一:我想要我所有的用户 第二:我希望我的所有用户都按年龄过滤 第三:我希望我的所有用户都按年龄和性别过滤 例如,如果我对getAllUsers和GetFilteredBage使用相同的类,这意味着我的类有两个职责,一个是获取用户,另一个是过滤用户。我说得对不对?在这个例子中,单一责任原则是如何工作的,我应该把这三个原则分成不同的类别,还是有更好的方法 Q] 如果我
users:
id
name
age
gender
我想通过三种方式获得我的用户
- 第一:我想要我所有的用户李>
- 第二:我希望我的所有用户都按年龄过滤
- 第三:我希望我的所有用户都按年龄和性别过滤
例如,如果我对getAllUsers和GetFilteredBage使用相同的类,这意味着我的类有两个职责,一个是获取用户,另一个是过滤用户。我说得对不对?在这个例子中,单一责任原则是如何工作的,我应该把这三个原则分成不同的类别,还是有更好的方法 Q] 如果我对getAllUsers和GetFilteredBage使用相同的类,这意味着我的类有两个职责 A] 不,因为类的任务是获取用户,所以这些函数应该是重载的,不应该在不同的类中。 Q] 它负责获取用户并对其进行过滤。我说得对不对 A] 我想不会吧!,过滤不是一项不同的任务,它应该在检索对象之前应用。 Q] 在这个例子中,单一责任原则是如何工作的,我应该将这三个原则分成不同的类别,还是有更好的方法 [答] 在这种情况下,我建议您只使用一个类,该类应具有以下函数重载
在这种情况下,您可以创建另一个类,而不是给单个类增加负担…SRP的一个好定义是: 一个模块应该只对一个参与者负责 (清洁建筑) 这意味着,如果告诉您这些函数做什么的人是相同的,那么您可以将它们保留在相同的类/模块中
假设,
getAllUsers()
是由accounting请求的,而getUserAtlastThisOld(int minimumAge)
是由HR请求的,那么将它们放在单独的类中可能是明智的。处理数据库的单一责任的类呢?在这种情况下,由于筛选很可能由数据库引擎完成,因此我没有理由分割责任。只需使用一个类。极端的情况下(我经常看到),单一责任原则可能会导致高度抽象的分散代码,其中任何有意义的功能都被划分到多个类中。这对于维护程序员来说是一场噩梦,因为这样的代码很难理解。由于某些原因,此类代码的文档记录总是很差。