gpt4 book ai didi

java - OOP:具有依赖注入(inject)的可重用类

转载 作者:太空宇宙 更新时间:2023-11-04 10:18:25 25 4
gpt4 key购买 nike

我一直在努力理解使用依赖注入(inject)容器时如何/在何处初始化类。我找不到合适的词语来解释,所以我举个例子。

我正在构建一个队列消费者,它从某个消息系统检索数据并将该消息传递给处理函数进行处理。我还有一个配置对象,其中加载了队列名称和空闲超时等内容。

我从一个看起来像这样的构造函数开始:

constructor ( @inject("config") config: IConfig ) {
this.queueName = config.getQueueName();
this.prefetch = config.getPrefetch();
this.idleTimeout = config.idleTimeout();
}

我不喜欢这个。我知道这是不正确的。该类不可重用,至少不容易重用。这让我想到了这样的事情:

constructor ( 
private queueName: string,
private prefetch: number,
private idleTimeout: number
) { }

我对此感觉更舒服,我可以重用该类,并且它更加灵活。但现在我不能直接注入(inject)它。每次我尝试直接注入(inject)类时似乎都是这种情况(直接注入(inject),我的意思是没有工厂或提供者或其他东西)

此时我发现自己有两个选择。

  1. 创建一个工厂来为我创建实例。
  2. 提前初始化对象并将它们绑定(bind)为常量值。

常量值似乎非常错误,因为向消费者注入(inject)任何东西都更加困难(例如记录器),而工厂似乎混淆了类,并且可能使范围界定不清楚( transient /单例)。

我的问题:

  • 有最正确的方法来处理这个问题吗?那看起来像什么?
  • 关于这个主题有哪些好的阅读 Material ?
  • 我是不是把事情搞得太复杂了?

感谢您的投入!

最佳答案

抱歉。我以不适用为由撤回之前的回复。如果您对依赖注入(inject)容器相当陌生,这篇文章(重点关注 PHP)可能会引发一些想法,以非常清晰的方式涵盖它们的需求、使用和配置。

http://fabien.potencier.org/do-you-need-a-dependency-injection-container.html

如果 PHP 不是您的菜,或者仍然没有达到目标,请添加新注释。

关于java - OOP:具有依赖注入(inject)的可重用类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51427326/

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