Dependency Inversion Principle说: 高级模块不应该依赖于低级模块.都 应该取决于抽象. 抽象不应该依赖于细节.细节应该取决于 在抽象. 我怎样才能在我的应用程序中找到高级和低级模块,对它
>高级模块不应该依赖于低级模块.都
应该取决于抽象.
>抽象不应该依赖于细节.细节应该取决于
在抽象.
我怎样才能在我的应用程序中找到高级和低级模块,对它们有什么清晰的定义吗?
这通常是我引用它们的方式:高级模块 – >此模块代表更多业务方面而非技术方面.它可以被称为抽象而不是实现,通常通过接口实现.
一些例子可能是:RegisterAccount,PostAnswer,PostQuestion,AddComment,InsertComment.
由于低级模块代表更多的技术方面而不是业务方面.比如说我们采用InsertComment HLM. LLM应该是:
>打开数据库连接
>执行insert语句
>关闭数据库连接
高级模块可以是另一个上下文中的低级模块.再举一个例子,AddComment的LLM应该是:
>验证评论(例如15 char min) – >这将是另一个HLM
>将注释插入数据库 – >这将是另一个HLM(InsertComment)
>向相关用户添加通知 – >这将是另一个HLM
这同样适用于其他HLM.