gpt4 book ai didi

dependency-injection - 依赖注入(inject)或配置对象?

转载 作者:行者123 更新时间:2023-12-04 08:20:13 25 4
gpt4 key购买 nike

我的类有以下构造函数

 public MyClass(File f1, File f2, File f3, Class1 c1, Class2 c2, Class3 c3)
{
..........
}

可以看出,它有6个参数。看到这段代码,我的一位前辈说与其传递 6 个参数,不如传递一个配置对象。

我这样写代码是因为最近我读到“依赖注入(inject)”,它说“类必须询问他们想要的东西”。所以我认为传递一个配置对象会违背原则。

我对“依赖注入(inject)”的解释是否正确?或者我应该听从我前辈的建议吗?

最佳答案

在这种情况下,“配置对象”是一个晦涩的术语;它以纯粹机械的方式构建你的努力。目标是将您的意图传达给类(class)的消费者;让我们重构它。

具有大量参数的方法或构造函数表明它们之间的关系松散。消费者通常必须进行更多推理才能理解 API。 这 3 个文件这 3 个类有什么特别之处?那就是没有传达的信息。

这是一个机会,可以通过从隐含的概念中提取明确的概念来创建更有意义和更能揭示意图的界面。例如,如果这 3 个文件因用户而相关,则 UserFileSet 参数将清楚地表达这一点。也许 f1c1 相关,f2c2 相关,而 f3c3。将这些关联声明为独立类将使参数数量减半并增加可从您的 API 派生的信息量。

最终,重构将高度依赖于您的问题领域。不要假设您应该创建单个对象来满足参数列表;尝试沿着参数之间关系的轮廓进行重构。这将始终产生反射(reflect)它所解决的问题的代码,而不是用于解决它的语言。

关于dependency-injection - 依赖注入(inject)或配置对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3888023/

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