如果将所有的View模型/展示模型都设为静态类,那么其他视图Presenter是否可以轻松地获取对其它View模型的引用来进行更改呢?这种做法是否不正确?
如果这种方法是错误的,你会如何实现呢?
如果将所有的View模型/展示模型都设为静态类,那么其他视图Presenter是否可以轻松地获取对其它View模型的引用来进行更改呢?这种做法是否不正确?
如果这种方法是错误的,你会如何实现呢?
如果你想让它变成静态的,最好实现一个正确的单例模式。如果你不能使用任何依赖反转技术,你会发现很难测试所有使用你的静态模型的类。
此外,如果只有一个类,请注意并发性 - 你需要锁定几乎所有东西。这不好。
最后,你可能想考虑使用工厂模式。易于访问,但将为每个想要使用它的类创建一个新的模型对象。并发问题(大多数)解决了。
静态ViewModel听起来像是一个可怕的想法(我认为静态是一般原则上的邪恶)。这意味着您不能拥有多个ViewModel实例。我可以想到许多UI示例,其中有几个相同的View类型实例,但使用静态ViewModel将无法实现。
如果要启用跨视图通信,则发布/订阅(事件)是更好的选择。
请记住,当我们谈论ViewModels / Presentaion Models时,它们通常会公开底层域对象。如果您有多个显示相同域对象部分的视图,则可以在域对象更改状态时引发事件,并且显示来自该域对象的数据的任何ViewModel都可以订阅这些事件并相应地更新其控件。