0

我听说使用静态类属性共享数据不是一个好习惯。虽然我还没有看到任何人使用这种方法,但我无法找出这种方法的缺点是什么!为了更清楚,让我们考虑一个 WPF 应用程序,它由许多 UserControls 组成,这些 UserControls 在一定的流程中共享数据和参数;使用静态引用将使访问/共享这些数据变得容易,但似乎没有人喜欢这种方法,为什么?

我期待一个与反模式相关的答案,我只是不确定它是什么。

4

2 回答 2

1

我认为这不一定是一种不好的做法,我只是认为它有可能被滥用。

在您的情况下,您需要在用户控件之间共享状态,这可能不是一个很好的用途,因为您希望在屏幕上共享状态,而静态类及其属性在整个应用程序中共享。

但是,静态类在功能上是单例模式的 .NET 版本,并且在类似情况下很有用。

http://en.wikipedia.org/wiki/Singleton_pattern

于 2015-05-05T20:28:20.407 回答
1

如果只是关于参数设置,那么在应用程序的不同部分之间共享它们没有任何问题,而不是拥有相同数据的多个副本。它仍然遵循 SOLID 原则,因为该类的职责是持有参数/配置选项。

如果你也有数据,它会变得有点复杂。对此没有一个最佳答案。将数据放在一个地方违反了 SOLID 原则,并且

  • 将更难编写单元测试
  • 发现错误
  • 在多线程环境中更难管理。

注意“更难”这个词,但并非不可能。

积极的一面

  • 在现代计算机体系结构中,计算比将数据从一个地方移动到另一个地方要便宜得多。因此,如果您有计算密集型应用程序,创建一次数据并从不同位置访问它通常是一个更好的选择,然后将其全部传递。

  • 如果您有多线程、计算密集型应用程序,并且通过数据设计可以保证在数据上没有引发条件,那么它仍然是比拥有多个副本更好的选择。创建、复制/移动内存非常昂贵。

这么说。如果您只担心控件和 UI 的东西,我建议您

  • 配置参数保留在一个静态类中(考虑到您在单次运行期间需要单一配置设置)
  • 数据信息移动到负责它的每个类。
于 2015-05-05T20:35:27.110 回答