代码之家  ›  专栏  ›  技术社区  ›  David

静态视图模型/表示模型

  •  3
  • David  · 技术社区  · 15 年前

    将所有视图模型/表示模型设置为静态类是否不正确?这样,如果其他视图演示者想要更改视图模型而不是其自身,那么很容易获得对它的引用。

    如果这是错误的方法,你将如何实现它?

    2 回复  |  直到 15 年前
        1
  •  0
  •   Mark Seemann    15 年前

    静态视图模型听起来是个糟糕的主意(我认为静态 邪恶的 作为一般原则)。这意味着您不能拥有一个以上的ViewModel实例。我可以想到许多UI示例,其中有多个相同视图类型的实例,但对于静态视图模型,这是不可能的。

    如果要启用跨视图通信, 发布/订阅 (事件)是更好的选择。

    请记住,当我们谈论ViewModels/Presentation模型时,它们通常公开底层的域对象。如果有七个视图显示同一域对象的部分,则可以让域对象在更改状态时引发事件,并且任何显示该域对象数据的视图模型都可以订阅这些事件并相应地更新其控件。

        2
  •  1
  •   Chris Arnold    15 年前

    如果你想让它成为静态的,最好实现一个适当的单例模式。您会发现测试所有使用静态模型的类是非常困难的,因为您将无法使用任何依赖倒置技术。

    另外,如果您只有一个类,那么要注意并发性——您需要锁定几乎所有的东西。不好的。

    最后,您可能需要考虑使用工厂模式。很容易访问,但会为每个想要使用它的类创建一个新的模型对象。并发问题(大部分)已解决。