如果我将我的对象分解成“单一职责”,是否有一个基本的想法,即类似的对象应该放在一起还是分开,例如,如果我有:
或者,是考虑将这些类在代码中完全分离(或尽可能分离)的思路更为重要?或者这两种方法都是SRP的有效用法?
编辑:我不想对示例中给出的对象的可行性进行评论,我只是编造它来说明问题。我同意数据、离职和薪资处理不是员工类的领域。
看起来SRP要求我将对象从现实世界的表示转变为围绕单个功能概念的属性和方法。
class Employee_DataProvider() : IEmployee_DataProvider { ... };
class Employee_Details() : IEmployee_Details { ... };
class Employee_Payroll() : IPayroll() { ... };
class Employee_LeaveProcessing() : ILeaveProcessing_Client { ... };
...
所有这些都居住在里面,但是通过接口松散耦合,拥有Employee类,这样做是否会产生不好的味道:
class Employee
{
IEmployee_DataProvider _dataProvider;
IEmployee_Details _details;
IPayroll _payroll;
ILeaveProcessing_Client _leaveProcessing;
//My functions call the interfaces above
}
或者,是考虑将这些类在代码中完全分离(或尽可能分离)的思路更为重要?或者这两种方法都是SRP的有效用法?
编辑:我不想对示例中给出的对象的可行性进行评论,我只是编造它来说明问题。我同意数据、离职和薪资处理不是员工类的领域。
看起来SRP要求我将对象从现实世界的表示转变为围绕单个功能概念的属性和方法。