gpt4 book ai didi

oop - 依赖注入(inject)是否违反了德米特法则

转载 作者:行者123 更新时间:2023-12-02 12:52:22 26 4
gpt4 key购买 nike

我一直在我的代码中添加依赖注入(inject),因为它使代码更容易通过模拟进行单元测试。

但是,我要求调用链上层的对象了解调用链下层的对象。

这是否违反了德墨忒尔法则?如果是的话,这有什么关系吗?

例如:类 A 依赖于接口(interface) B,要使用的该接口(interface)的实现被注入(inject)到类 A 的构造函数中。任何想要使用类 A 的人现在都必须拥有对 B 的实现的引用.并且可以直接调用其方法并了解其子组件(接口(interface)B)

维基百科关于得墨忒耳定律的说法是:“基本概念是给定的对象应该尽可能少地假设其他任何事物(包括其子组件)的结构或属性。”

最佳答案

依赖注入(inject)可能会破坏德米特法则。如果你强制消费者进行依赖项的注入(inject)。这可以通过静态工厂方法和 DI 框架来避免。

您可以通过以需要传入依赖项的方式设计对象来同时拥有一种使用它们的机制,而无需显式执行注入(inject)(工厂函数和 DI 框架)。

关于oop - 依赖注入(inject)是否违反了德米特法则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/160032/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com