我听说使用静态类属性共享数据不是一个好习惯。虽然我还没有看到任何人使用这种方法,但我无法找出这种方法的缺点是什么!为了更清楚,让我们考虑一个 WPF 应用程序,它由许多 UserControls 组成,这些 UserControls 在一定的流程中共享数据和参数;使用静态引用将使访问/共享这些数据变得容易,但似乎没有人喜欢这种方法,为什么?
我期待一个与反模式相关的答案,我只是不确定它是什么。
我听说使用静态类属性共享数据不是一个好习惯。虽然我还没有看到任何人使用这种方法,但我无法找出这种方法的缺点是什么!为了更清楚,让我们考虑一个 WPF 应用程序,它由许多 UserControls 组成,这些 UserControls 在一定的流程中共享数据和参数;使用静态引用将使访问/共享这些数据变得容易,但似乎没有人喜欢这种方法,为什么?
我期待一个与反模式相关的答案,我只是不确定它是什么。
我认为这不一定是一种不好的做法,我只是认为它有可能被滥用。
在您的情况下,您需要在用户控件之间共享状态,这可能不是一个很好的用途,因为您希望在屏幕上共享状态,而静态类及其属性在整个应用程序中共享。
但是,静态类在功能上是单例模式的 .NET 版本,并且在类似情况下很有用。
如果只是关于参数设置,那么在应用程序的不同部分之间共享它们没有任何问题,而不是拥有相同数据的多个副本。它仍然遵循 SOLID 原则,因为该类的职责是持有参数/配置选项。
如果你也有数据,它会变得有点复杂。对此没有一个最佳答案。将数据放在一个地方违反了 SOLID 原则,并且
注意“更难”这个词,但并非不可能。
积极的一面
在现代计算机体系结构中,计算比将数据从一个地方移动到另一个地方要便宜得多。因此,如果您有计算密集型应用程序,创建一次数据并从不同位置访问它通常是一个更好的选择,然后将其全部传递。
如果您有多线程、计算密集型应用程序,并且通过数据设计可以保证在数据上没有引发条件,那么它仍然是比拥有多个副本更好的选择。创建、复制/移动内存非常昂贵。
这么说。如果您只担心控件和 UI 的东西,我建议您