首页 > 解决方案 > 是否有任何策略来划分应用 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?还是这纯粹依赖于经验?我希望应该有具体的步骤来分析和解决这种混乱。经验丰富的建议表示赞赏。

标签: classoopdesign-patternssingle-responsibility-principle

解决方案


没有“责任”的定义。因此,没有这样的策略。但是,有:1)几乎没有常识,2)对您正在工作的环境的感觉。

根据我的个人经验,正确的问题是“为什么我需要更改此代码?”。如果有不止一个(业务?)原因,那就是更多思考的触发因素。


推荐阅读