这是否违反了单一责任原则

时间:2017-05-23 19:20:22

标签: design-patterns solid-principles single-responsibility-principle

说我有一个这样的课程:

class Config
{
   private $configA;
   private $configB;
   private $configC;
   private $configD;

   public function getConfigA(): string
   {
        return $this->confiA;
   }
   //...
}

从某种意义上讲,这个课程只有一个责任:管理配置设置。

但在另一种意义上,它有许多不同的改变原因:重命名配置,添加新配置,删除配置,返回类型更改,配置需要验证等等

每个配置设置都应该有一个类来满足单一责任还是太过分了?

2 个答案:

答案 0 :(得分:1)

这不是违规行为。一个简单的测试是你是否必须在一个句子中使用“和”这个词来解释它的作用。

答案 1 :(得分:0)

这样的问题是主观的,需要看一下背景。其中一个非常重要的背景是抽象级别。例如,在架构级别,单一职责适用于高级组件。例如,对于Web应用程序,您可能认为处理业务逻辑数据访问应该是分开的,由单独的模块处理。虽然,它们中的每一个都有许多较小的模块,如类,接口等。但是,在抽象层次 - 架构层面 - 您可以将它们中的每一个视为分配给模块的单独职责。

但是在诸如业务逻辑之类的模块中,抽象级别是不同的。您在班级处理实体。现在,每个班级都必须以单一责任为基础,但在自己的层面上。

实现这一目标的一种方法,也就是一般的课堂设计,就是询问这门课程的内容,简短的单词或短语描述。如果你找不到这么简短的描述,那么它可能需要分解。