我很难证明这是否违反了SRP。 Employee类只代表系统中的员工。
class Employee
{
int id;
string name;
Date startDate;
int departmentCode;
void UpdateEmployeeInformation(some arguments) //updates the data in DB
void DaysInTheCompany() //calculates now - startDate difference
}
根据我能阅读的内容,它确实违反了SRP,但我不确定为什么(我认为这是因为Update方法不仅仅是持有数据的责任?
答案 0 :(得分:2)
是。它违反了SRP。
员工的责任是持有员工信息,也许是一些计算,例如DaysInTheCompany,但访问文件数据库不属于他的责任。
您的示例是最容易识别的示例之一。
这篇文章对我很有用。 https://www.codeproject.com/Articles/587404/Understand-Single-Responsibility-and-Interface-Seg
您的Employee类只是一个容器,您将在业务层中填充此容器并将其传递给数据层。
我使用Service类(EmployeeService),此类接收Employee对象并更新数据库中的信息。
在此链接中,您可以看到一些想法。 https://softwareengineering.stackexchange.com/questions/156481/how-should-i-encapsulate-database-access
答案 1 :(得分:-2)
不,它不是,它实际上是一个好方法。对象可以在内部封装用于完成其工作的数据库连接。对象的职责是进行更新,这通常意味着更新数据库中的数据。