最近我正在阅读Robert Martin的Clean Architecture。
我对几个SOLID原则定义有些误解。正是单一责任原则和开放/封闭原则。
首先,我们有以下内容
一个类(模块)应该只有一个改变的理由
其中原因表示演员。听起来很清晰。
被误解的部分是数据库和交互器的关系。我们通过Financial Data Gateway
在Database
组件中实现Financial Data Mapper
接口,因此我们有两个模块,一个职责。似乎违反了SRP。
我是正确的还是只是缺少正确理解的东西?
我想强调一点,列出的设计方法对于大多数情况(即使不是全部情况),都是既不是面向对象的,也不是好的体系结构。 Here是我的文章,其中有这种情况的更多详细信息。
单一责任原则也有多种,有时是相互矛盾的解释。在面向对象的上下文中,[[应该]]的意思基本上是强大的凝聚力和松散的耦合。这是我的slidedeck,从实用的角度解释了所有这些。因此,在适当的尊重下,我认为您可能对SRP,OCP,“干净体系结构”的实用性或可行性以及总体上面向对象的概念不正确。
话虽这么说,答案是:您的问题的语法是完全错误的。没有“违反SRP”之类的事情。 SRP的定义非常松散,即使您选择了一种解释,它也不是二进制的东西。这是一个严重依赖于需求和上下文的规模,不能(不应)单独对其进行评估。