gpt4 book ai didi

java - jSingleton 应该替换为单个或多个接口(interface)。这实际上意味着什么?

转载 作者:行者123 更新时间:2023-12-01 11:13:59 25 4
gpt4 key购买 nike

我读过一篇关于 TDD 的文章,其中作者提到 Singleton 作为一种反模式,为了避免这种情况,一个解决方案是应该用单个或多个接口(interface)替换 Singleton。这实际上意味着什么?一个例子会很有帮助。

最佳答案

通常会访问单例,例如 SingletonInstance si = SingletonInstance.getInstance()。对于 TDD,有两个步骤可以摆脱这种情况。

首先是不要直接使用SingletonInstance,而是像作者说的“单个或多个接口(interface)”,比如SingletonService ss = SingletonInstance.getInstance()这样服务 API SingletonService 是实例实现的接口(interface)。对于“多个”情况,单例 API 可以分为多个接口(interface),每个接口(interface)具有较小但内聚的范围,因此每个接口(interface)都遵循 single responsibility principle .

第二步,特别是对于 TDD,是注入(inject)实例而不是查找它。如果你的模块知道如何找到它需要的东西,那么它的耦合度就太大了,无法简单地模拟。但是,如果您的模块提供了它所需的服务(通过构造函数、更改器(mutator)、DI 等),那么您的模拟框架可以使用模拟服务轻松测试您的模块,该服务实现的 API 足以执行您的测试。

关于java - jSingleton 应该替换为单个或多个接口(interface)。这实际上意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32051877/

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