2013-10-28 23 views
1

我与MvvmCross视图模型试验,并在我的应用程序,他们共享不仅具有类似布局结构不同平台之间,而且在信息呈现不同,这取决于应用程序的尺寸应用之间。例如,iPad应用可能会在同一页面上显示客户列表和选定的客户详细信息,而iPhone应用会在不同的页面之间进行分割。 MvvmCross支持所有这些场景,因此在所有这些应用程序之间共享通用视图模型集非常简单。可以在静态类中的视图模型之间共享公共细节吗?

但是也有情况下,当它的方便要共享多个视图模型相同的细节。例如,不同的视图可能会显示最近的Twitter消息,股票报价更新等。或者一些全局用户设置(用户名,最近的登录时间等)暂时我已经将它们放在从MvxNotifyPropertyChanged继承的单例类AppState中。所有视图模型都具有属性AppState以访问共享应用程序状态,因此任何视图都可以将其控件绑定到AppState。这也适用于设计时模型。

我一对夫妇的平台上的测试(没有尝试非Windows平台还),它按预期工作。但我没有测试终生情景,如墓碑/脱水。基本上我有一些部分在我的视图上绑定到单身人士的属性。是否有任何与视图模型寿命有关的警告?此外,如果使用这样的单例可以接受,我可以使用singleton pattern或MvvmCross依赖注入(MvxResolve)。从技术上讲它会是一样的,那么这两种方法都有哪些优势?

回答

1

如果静态共享工程,为您和您的应用程序,这是伟大的。

没有什么特别的原因,我能想到的,为什么这应该让你的对象更难在不同生命周期的情况下使用。

为什么static是'皱眉'的主要原因是体系结构的原因 - static s导致紧密耦合的代码,这是较少测试和(恕我直言)难以维护和长期重用。

如果您的应用程序不关心这些事情 - 这可能是这种情况 - 那么静态单身可能是构建应用程序的好方法 - 甚至可能使代码更简单跟随他人。

有很多有关此类区域的其他问题,如:

+1

是的,我知道的对测试有影响,但是在这种情况下,我希望我的测试能够验证实际的单例值,所以我将AppState保留在外面嘲弄。在某些特定的移动平台上,我更关心任何与单身生命有关的事情。 感谢您的回答! –