Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 这是否违反了单一责任原则_Design Patterns_Solid Principles_Single Responsibility Principle - Fatal编程技术网

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

Design patterns 这是否违反了单一责任原则,design-patterns,solid-principles,single-responsibility-principle,Design Patterns,Solid Principles,Single Responsibility Principle,假设我有这样一门课: class Config { private $configA; private $configB; private $configC; private $configD; public function getConfigA(): string { return $this->confiA; } //... } 从某种意义上说,这个类只有一个职责:管理配置设置 但从另一个意义上讲,它有很多不同的原因

假设我有这样一门课:

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

   public function getConfigA(): string
   {
        return $this->confiA;
   }
   //...
}
从某种意义上说,这个类只有一个职责:管理配置设置

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


是否应该为每个配置设置一个类来满足单个责任,还是太远了?

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

像这样的问题是主观的,需要看上下文。一个这样的背景,一个非常重要的背景,是抽象层次。例如,在体系结构级别,单一责任应用于高级组件。例如,在web应用程序的情况下,您可能认为处理业务逻辑数据访问应该是分开的,由单独的模块处理。虽然,它们中的每一个都有许多较小的模块,例如类、接口等。但是,在抽象级别——体系结构级别——您可以将它们中的每一个视为分配给模块的单独的单个责任。 但在诸如业务逻辑之类的模块中,抽象级别是不同的。您在类级别处理实体。现在,每个类都必须基于单一的职责,但在其自己的级别上


实现这一点的一种方法,也是一般的课堂设计,是询问这门课是关于什么的,一个简短的单词或短语描述。如果你找不到如此简短的描述,那么可能需要对其进行细分

马蒂,你在干什么,伙计!这篇文章可能有一些想法,但它是一个很好的研究。3/4的方式下来模式分类的类型。你可能在寻找一种结构模式。试图理解这类东西的粒度有多大,我的类是否违反了这一原则。如果你只是返回字符串,我可能会将它们打包成数组或其他东西,但你说它们可能是不同的返回类型,这有点令人担忧。