我正在开发一个应用程序,我需要在其中创建一个对象,并且多个类必须访问和修改该对象。如何查看其他类对象最近所做的更改以及如何通过所有类集中访问该对象而不将该对象作为参数传递给所有类?
我正在创建一个 Apache POI 文档,在其中添加多个表、多个页眉/页脚和段落。我只希望我的应用程序中存在一个XWPFDocument
对象。
有没有我们可以实现的设计模式?
我正在开发一个应用程序,我需要在其中创建一个对象,并且多个类必须访问和修改该对象。如何查看其他类对象最近所做的更改以及如何通过所有类集中访问该对象而不将该对象作为参数传递给所有类?
我正在创建一个 Apache POI 文档,在其中添加多个表、多个页眉/页脚和段落。我只希望我的应用程序中存在一个XWPFDocument
对象。
有没有我们可以实现的设计模式?
有一个单例模式,它为应用程序创建一个实例,并且无需传递即可共享。
但这不是最好的选择。
为什么这是一个糟糕的选择?
比单例模式更好的是应用程序范围的单实例
为应用程序创建一个对象并使用一些上下文对象共享它。Misko 在他的可测试代码指南中对此进行了详细解释
单实例而不是单例模式
它代表应用程序范围的单个实例,它 不会通过静态实例字段来强制其单一性。
为什么单例很难测试?
reset()
,setForTest(…)
因为您需要在测试期间更改实例。如果您在测试后忘记重置 Singleton,以后的使用将使用陈旧的底层实例,并且可能会以难以调试的方式失败。