我知道“类(class)有一个改变的理由”。现在,那到底是什么?是否有一些气味/迹象可以表明类(class)没有单一责任?还是真正的答案隐藏在YAGNI中,并且在您第一次上课时才重构为单一职责?

最佳答案

单一责任原则

有很多明显的情况,例如CoffeeAndSoupFactory。同一设备中的咖啡和汤可能会导致令人不快的结果。在此示例中,设备可能分为HotWaterGenerator和某种Stirrer。然后可以从这些组件中构建新的CoffeeFactorySoupFactory,并且可以避免任何意外的混合。

在更微妙的情况下,数据访问对象(DAO)和数据传输对象(DTO)之间的关系非常普遍。 DAO与数据库对话,DTO可序列化以在进程和机器之间传输。通常,DAO需要引用您的数据库框架,因此它们无法在未安装数据库驱动程序或访问数据库的特权的富客户端上使用。

代码闻起来

  • 类中的方法开始按功能 Realm 分组(“这些是Coffee方法,这些是Soup方法”)。
  • 实现许多接口(interface)。
  • 关于oop - 您如何定义单一职责?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/246068/

    10-13 03:52