这是过去论文中的一个问题。
在上面的问题中,我认为有三个责任,一个用于更新员工记录,一个用于计算salaray和税收,一个用于获取小时报告。 我会将上面的界面重新组织为:
public interface IChangeEmployee{
void UpdateEmployee(Employee employee);
void CreateEmployee(Employee employee);
}
public interface ICalculation{
void CalculateSalary();
double CalculateTax();
}
public interface IReports{
void SendHourReports();
}
我的回答是有效的还是请纠正我? 感谢
答案 0 :(得分:1)
对于这样的问题,通常没有单一的解决方案,原则就是为你提供指导。这些原则应该在其他周围条件和要求的背景下应用,以便得到最佳应用。很难谈论正确和错误的设计,而且好的和坏的设计更容易。
只考虑原则,您建议的SRP应用程序看起来完全没问题。您根据某些逻辑将方法分类为分离的响应,您将每个组分配给单个接口。做得好!当然还有其他一些你也可以做的分类,而不是更正确 - IContractor(更新和创建)和IAdministrator(所有其他)也看起来没问题。
如果产生的设计好或者可能不那么好,取决于潜在的周围条件(或者#34;力量",它们在设计模式理论中经常被称为)。
让我们说,在这种情况下,我们有一个公司系统,在就业管理和招聘的背景下,有两个内部职位定义 - 承包商和管理员。因此,系统中的每一个都有相应的用户角色。您现在可以决定为每个界面创建一个单独的界面(简单的用户角色管理),只提供他有权执行的服务!在这种情况下,只有2个接口的分离会更好,更简单,完全覆盖reqs。