gpt4 book ai didi

java - 单例设计模式 : Pitfalls

转载 作者:IT老高 更新时间:2023-10-28 20:48:53 24 4
gpt4 key购买 nike

不确定使用严格的全局状态实现是否会失败。什么时候单例不适合应用程序?

最佳答案

如果您正在进行单元测试,单例通常是个坏主意,不进行单元测试(或 BDD 或验收测试)通常是个坏主意。

使对象具有全局状态意味着您编写的涉及这些对象的单元测试将相互隔离和脱节。相反,您将不得不担心为每个测试重置状态,相信我……这永远不会 100% 完成。如果您不重置全局状态,那么您会开始在测试中遇到非常奇怪且难以调试的错误,这些错误会浪费时间。

全局状态还会增加代码的耦合度,使其难以重构。

理想的方法是使用 IoC/DI 容器(Spring、Guice 等)来请求对象。这些容器通常具有使对象显示为“单例”的方法,但它们也有根据情况修改该行为的方法(即单元测试与您的域代码)。

这当然取决于您问题的大小。如果你正在拼凑一个 4-class 测试平台来尝试一些东西,那么继续使用 Singleton。但是,一旦该项目开始运作并变得更大、更复杂,就将 Singleton 重构出来。

关于java - 单例设计模式 : Pitfalls,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1448393/

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