对象中的持久性责任是否违反了 SRP?
Is persistence responsibility in an object violating SRP?
我很难证明这是否违反了 SRP。 Employee class 仅表示系统中的一名员工。
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 方法与仅保存数据的职责不同?
是的。它违反了 SRP。
Employee 的职责是保存员工信息,也许是一些计算,比如 DaysInTheCompany,但是访问 DB of File 不是他的职责。
您的示例是最容易识别的示例之一。
这个 post 对我很有用。
https://www.codeproject.com/Articles/587404/Understand-Single-Responsibility-and-Interface-Seg
您的员工 class 只是一个容器,您将在您的业务层中填充此容器并将其传递到数据层。
我使用了一个Serviceclass,(EmployeeService),这个class接收Employee对象并更新数据库中的信息。
在这个link中,你可以看到一些想法。
https://softwareengineering.stackexchange.com/questions/156481/how-should-i-encapsulate-database-access
不,不是,这实际上是一个好方法吗?一个对象可以在内部封装一个将用于完成其工作的数据库连接。对象的职责是进行更新,通常是更新db中的数据。
我很难证明这是否违反了 SRP。 Employee class 仅表示系统中的一名员工。
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 方法与仅保存数据的职责不同?
是的。它违反了 SRP。
Employee 的职责是保存员工信息,也许是一些计算,比如 DaysInTheCompany,但是访问 DB of File 不是他的职责。
您的示例是最容易识别的示例之一。
这个 post 对我很有用。 https://www.codeproject.com/Articles/587404/Understand-Single-Responsibility-and-Interface-Seg
您的员工 class 只是一个容器,您将在您的业务层中填充此容器并将其传递到数据层。
我使用了一个Serviceclass,(EmployeeService),这个class接收Employee对象并更新数据库中的信息。
在这个link中,你可以看到一些想法。 https://softwareengineering.stackexchange.com/questions/156481/how-should-i-encapsulate-database-access
不,不是,这实际上是一个好方法吗?一个对象可以在内部封装一个将用于完成其工作的数据库连接。对象的职责是进行更新,通常是更新db中的数据。