我读过this SO article,它告诉我们单身人士非常邪恶,应该像流行病一样避免。它还告诉我们,单身就像一个“全球”。
这让我想知道我是否真的需要一些像程序运行时状态的东西,单身是个坏主意吗?
例如,我有一个可以产生许多窗口的JavaFX应用程序。每个窗口至少有两个样式表 - 一个用于控制布局(如对齐等),另一个用于主题。
主题样式表可以在运行时切换到另一个主题样式表,它应该全局影响在该实例打开的所有窗口。对我来说,创建一个具有ObservableList
样式表的单例类是有意义的,所有窗口都可以将Scene
的样式表属性绑定到。
这真的是个坏主意吗?如果它影响测试,完全如何影响测试?我理解每个窗口应该彼此独立地进行测试,但实际的行为是所有这些窗口都假设看起来主题相同。此外,我认为它不应该影响每个窗口应该真正相互独立的其他区域。
如果这真的很糟糕,在上面的例子中应该采用什么方法来实现相同的结果?
答案 0 :(得分:4)
实际上,使用依赖注入可以获得相同的行为。
在应用程序的主线中,您将实例化一个类UIContext
,每当您打开一个新窗口时,您都会将UIContext
实例赋予其构造函数。
所有窗口共享相同的UIContext
实例,但它不是单例,只是您已将整个UIContext
注入到许多其他依赖类中。
也就是说,如果您需要实施测试,您可以毫无困难地向窗口提供样本/假UIContext
。