class - 是否有任何策略来划分应用 SRP 的责任?
问题描述
是否有任何策略来划分类以应用单一责任原则?
在一个中等规模的团队中,我们正在开发一个可穿戴管理器应用程序,它可以连接不同类型的可穿戴设备,比方说,Wearable1
并且Wearable2
(一次连接一个)。每个可穿戴设备都有不同类型的数据交换功能。所以我决定根据可穿戴类型来划分责任。IE
interface Manager {
// common functionalities
}
class Wearable1manager implements Manager {
// Manages wearable1 specific functionalities
// as well as wearable1 related capabilities
}
class Wearable2manager implements Manager {
// Manages wearable2 specific functionalities
// as well as wearable2 related capabilities
}
我的一位同事否认我的设计,说它违反了Single Responsibility Principle
(SRP),因为与能力相关的功能应该由单一能力管理器处理。他的提议就像,
interface Manager {
// common functionalities
}
class WearableManager implements Manager {
// Manages wearable1 specific functionalities
// as well as wearable2 specific functionalities
}
class CapabilityManager implements Manager {
// Manages wearable1 related capabilities
// as well as wearable2 related capabilities
}
基本上,我发现我们都在强调应用单一职责原则,但我们划分职责的想法是基于不同的方面。当我需要根据哪个职责来决定我应该对类进行划分时,我经常发现我处于这种危急情况。所以我的问题是,
是否有任何针对 OOP 设计的特定指南有助于决定划分类以应用 SRP?还是这纯粹依赖于经验?我希望应该有具体的步骤来分析和解决这种混乱。经验丰富的建议表示赞赏。
解决方案
没有“责任”的定义。因此,没有这样的策略。但是,有:1)几乎没有常识,2)对您正在工作的环境的感觉。
根据我的个人经验,正确的问题是“为什么我需要更改此代码?”。如果有不止一个(业务?)原因,那就是更多思考的触发因素。
推荐阅读
- reactjs - 如何从另一个组件的 react-hook-form 读取值
- parallel-processing - Cython prange 变量范围
- database - 从数据库中打印 Laravel 特定数据(图片)
- python - ValueError:发现样本数量不一致的输入变量:[100, 300]
- apache - ssl 证书中的 Win32 不支持内置 SSLPassPhraseDialog
- pandas - 对 df 进行排序,但从排序中排除前 2 列
- java - 如何以编程方式检索方法的参数
- python-3.x - python函数从用户读取输入行并返回pandas系列
- python - 高效地创建亲和矩阵 numpy
- sql-server - 两个相同的 SQL 表,但我的 Java 应用程序对回车的处理方式不同