多种方法的单一职责原则
Posted
技术标签:
【中文标题】多种方法的单一职责原则【英文标题】:Single Responsibility Principle for many methods 【发布时间】:2020-07-11 01:18:10 【问题描述】:如何为一个要执行多项任务的类保持单一职责?例如,如果我想编写一个表示计算器的代码,该计算器能够进行加减乘法和执行多种不同的计算,我如何才能使软件的设计遵循单一职责?
【问题讨论】:
从tag wiki 开始了解有关 SRP 的更多信息并注意 Bob Martin 博客的链接。 【参考方案1】:单一责任原则可以应用于多个层面。方法层、类层甚至服务层(思考微服务)。
在方法级别,公共 add() 函数适用于 SRP,如果它只做一件事,即添加数字。它不应该负责例如从控制台命令字符串或 REST 调用或其他东西解析添加命令,这个责任应该放在其他地方。
Calculator 类负责执行不同类型的计算,这里是加法、减法等。但它不负责例如解析命令或渲染结果(例如创建用于显示的 html 输出)。
考虑到服务水平,订购服务应负责处理订单或提供订单信息的所有事情。但它不应该负责产品和其他东西的仓储。
注意:在内部使用私有方法的类的公共方法仍然可以遵循 SRP,因为该方法的一般任务遵循一个责任。例如,公共的 divide() 方法可能使用私有方法来检查和处理不需要的除数为零。这个私有方法再次遵守 SRP,因为它只做一件事,处理除以零,但仍然适合上述级别的大局。
【讨论】:
What is the scope of the Single Responsibility Principle?以上是关于多种方法的单一职责原则的主要内容,如果未能解决你的问题,请参考以下文章