依赖反转原理说:
- 高级模块不应依赖于低级模块。二者都应该依赖于抽象
- 摘要不应依赖于细节。细节应取决于基于抽象
如何在我的应用程序中实际找到高级和低级模块,它们有明确的定义吗?
我通常这样称呼它们:
高级模块-->此模块更多地代表业务方面,而不是技术方面。它可以被称为抽象而非实现,通常通过接口来实现。
例如:RegisterAccount
、PostAnswer
、PostQuestion
、AddComment
、InsertComment
。
因为低级模块代表更多的是技术方面,而不是业务方面。例如,我们采用InsertComment
HLM。LLM应为:
- 打开数据库连接
- 执行插入语句
- 关闭数据库连接
在另一种情况下,高级模块可以是低级模块。举另一个例子,AddComment
的LLM应该是:
- 验证注释(例如15个字符)-->这将是另一个HLM
- 将注释插入数据库-->这将是另一个HLM(
InsertComment
) - 向相关用户添加通知-->这将是另一个HLM
这同样适用于其他HLM。