【问题标题】:Does OCP violates SRP in the Clean Architecture?OCP 是否违反了 Clean Architecture 中的 SRP?
【发布时间】:2020-02-03 05:15:16
【问题描述】:

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

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

对于第一个,我们有以下内容

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

原因是指演员。听起来很清楚。

继续下一个 - OCP。这里我们有这样的例子

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

我是对的还是只是为了正确理解而遗漏了什么?

【问题讨论】:

  • 作为一个接口没有任何代码,数据持久化的责任显然只有一个模块。我没有看到任何违规行为...

标签: oop architecture solid-principles clean-architecture


【解决方案1】:

我想强调列出的设计方法对于大多数情况(如果不是所有情况)来说既不是面向对象也不是一个好的架构Here 是我的一篇文章,其中详细说明了为什么会这样。

单一责任原则也有多种解释,有时是相互矛盾的。它应该在面向对象的上下文中意味着基本上是强内聚和松耦合。这是我的slidedeck 从实用的角度解释这一切。

因此,恕我直言,我认为您可能对 SRP、OCP、“清洁架构”的实用性或可行性以及一般的面向对象有错误的概念。

话虽如此,答案是:你的问题的语法完全错误。不存在“违反 SRP”之类的东西。 SRP 的定义非常松散,即使您选择一种解释,它也不是二元的。这是一个严重依赖于需求和上下文的量表,不能(不应该)单独评估。

【讨论】:

  • Martin 尝试过clarify 他书中 SRP 的含义;但公平地说,多年来,他自己的定义已经“成熟”了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-22
  • 2017-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-28
  • 2020-07-04
相关资源
最近更新 更多