【问题标题】:Single Responsibility Principle单一职责原则
【发布时间】:2014-05-19 06:06:10
【问题描述】:

这是过去论文中的一个问题。

在上面的问题中,我认为有三个职责,一个是更新员工记录,一个是计算工资和税金,一个是获取工时报告。 我将上面的界面重新组织为:

public interface IChangeEmployee{
 void UpdateEmployee(Employee employee);
 void CreateEmployee(Employee employee);
}
public interface ICalculation{
 void CalculateSalary();
 double CalculateTax();
}
public interface IReports{
void SendHourReports();
}

我的答案是有效的还是请纠正我? 谢谢

【问题讨论】:

  • 因为它来自过去的论文;你的答案是什么?结果如何?
  • OP 发布了尝试的答案。我想没有要检查的答案。

标签: oop single-responsibility-principle


【解决方案1】:

对于此类问题,通常没有单一的解决方案,而原则可以为您提供指导。这些原则应在其他周围条件和要求的背景下应用,以便得到最佳应用。很难谈论正确和错误的设计,而谈论好的和坏的设计要容易得多。

您提议的 SRP 应用看起来完全没问题,仅考虑原理。您根据某些逻辑将方法分类为单独的职责,将每个组分配给单个接口。做得好!当然,您还可以进行一些其他分类,但不正确 - IContractor(更新和创建)和 IAdministrator(所有其他)看起来也不错。

产生的设计是好还是不好取决于潜在的环境条件(或“力量”,它们在设计模式理论中通常被称为)。

假设在这种情况下,我们有一个公司系统,并且在雇佣管理和招聘方面定义了 2 个内部职位 - 承包商和管理员。因此,系统中的每个用户角色都有相应的用户角色。您现在可以决定为每个人创建一个单独的界面(简单的用户角色管理),只提供他有权执行的服务!在这种情况下,仅在 2 个接口中分离会更好,因为更简单并且可以完美地覆盖需求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 2013-03-16
    • 2011-11-16
    相关资源
    最近更新 更多