说我有一个这样的课程:
class Config
{
private $configA;
private $configB;
private $configC;
private $configD;
public function getConfigA(): string
{
return $this->confiA;
}
//...
}
从某种意义上讲,这个课程只有一个责任:管理配置设置。
但在另一种意义上,它有许多不同的改变原因:重命名配置,添加新配置,删除配置,返回类型更改,配置需要验证等等
每个配置设置都应该有一个类来满足单一责任还是太过分了?
答案 0 :(得分:1)
这不是违规行为。一个简单的测试是你是否必须在一个句子中使用“和”这个词来解释它的作用。
答案 1 :(得分:0)
这样的问题是主观的,需要看一下背景。其中一个非常重要的背景是抽象级别。例如,在架构级别,单一职责适用于高级组件。例如,对于Web应用程序,您可能认为处理业务逻辑和数据访问应该是分开的,由单独的模块处理。虽然,它们中的每一个都有许多较小的模块,如类,接口等。但是,在抽象层次 - 架构层面 - 您可以将它们中的每一个视为分配给模块的单独职责。
但是在诸如业务逻辑之类的模块中,抽象级别是不同的。您在班级处理实体。现在,每个班级都必须以单一责任为基础,但在自己的层面上。
实现这一目标的一种方法,也就是一般的课堂设计,就是询问这门课程的内容,简短的单词或短语描述。如果你找不到这么简短的描述,那么它可能需要分解。