OCP是否违反了Clean Architecture中的SRP?

问题描述 投票:1回答:1

最近我正在阅读Robert Martin的Clean Architecture。

我对几个SOLID原则定义有些误解。正是单一责任原则和开放/封闭原则。

首先,我们有以下内容

一个类(模块)应该只有一个改变的理由

其中原因表示演员。听起来很清晰。

移到下一个-OCP。这里有这样的例子enter image description here

被误解的部分是数据库和交互器的关系。我们通过Financial Data GatewayDatabase组件中实现Financial Data Mapper接口,因此我们有两个模块,一个职责。似乎违反了SRP。

我是正确的还是只是缺少正确理解的东西?

oop architecture solid-principles clean-architecture
1个回答
2
投票

我想强调一点,列出的设计方法对于大多数情况(即使不是全部情况),都是既不是面向对象的,也不是好的体系结构Here是我的文章,其中有这种情况的更多详细信息。

单一责任原则也有多种,有时是相互矛盾的解释。在面向对象的上下文中,[[应该]]的意思基本上是强大的凝聚力和松散的耦合。这是我的slidedeck,从实用的角度解释了所有这些。因此,在适当的尊重下,我认为您可能对SRP,OCP,“干净体系结构”的实用性或可行性以及总体上面向对象的概念不正确。

话虽这么说,答案是:您的问题的语法是完全错误的。没有“违反SRP”之类的事情。 SRP的定义非常松散,即使您选择了一种解释,它也不是二进制的东西。这是一个严重依赖于需求和上下文的规模,不能(不应)单独对其进行评估。

© www.soinside.com 2019 - 2024. All rights reserved.