我试图理解c ++中的设计原理。
在数据库中,我有用户。
users:
id
name
age
gender
我想通过三种方式吸引我的用户。
例如,如果我对getAllUsers和getFilteredByAge使用相同的类,则意味着我的类有两个责任,即负责获取用户以及对用户进行过滤。我说的对吗?在此示例中,“单一责任原则”是如何工作的,我应该将这三个人划分为不同的类,还是有更好的方法?
答案 0 :(得分:2)
SRP的一个很好的定义是:
一个模块应该对一个演员负责,而只能对一个演员负责。
(清洁架构)
这意味着,如果告诉您这些功能的人相同,那么您可以将它们放在相同的类/模块中。
如果说getAllUsers()
是会计要求的,而getUserAtLeastThisOld(int minimumAge)
是人力资源要求的,那么将它们放在单独的类中可能是明智的。
答案 1 :(得分:1)
以下是您问题的答案
Q]如果我对getAllUsers和getFilteredByAge使用相同的类,这意味着我的类有两个责任吗?
A] 否,因为您班级的工作是吸引用户,所以这些功能应该是重载,并且不应位于不同的班级中。
Q]它负责获取用户并过滤用户。我对吗?
A] 我想不!过滤不是一项不同的任务,应该在检索对象之前应用它。
Q]在此示例中,单一职责原则是如何工作的,我应该将这三个职责划分为不同的类,还是有更好的方法?
A]
在这种情况下,我建议您只使用一个类,该类应具有以下函数重载
注意:现在假设将来您要向此类添加更多功能 例如为用户计算工资,或为用户添加家庭详细信息 那么在这种情况下,您可以创建另一个班级,而不是给单个班级增加负担...