在维持模型 - 视图模型关系(例如,为每个模型实例创建vm实例)之后,我有一些想法可能会引起争议,但我对意见很好奇。
如果使用VM类来维护模型实例的静态容器列表,该怎么办? 那些可能(或者甚至应该)是弱引用,因此每当模型类实例超出范围时,其视图模型就会自动处理。另一种选择是重用vm实例。
另一个适用于第一个的想法可能是从模型到viewmodel类创建隐式转换运算符。每当从模型实例进行转换时,我总是会得到相同的vm实例。
你怎么看?这是否违反了规则和MVVM模式?
//编辑 我应该提供一下这背后的动机:在我的应用程序中,我有多个地方,我使用我的一个模型类,需要相应的vm引用。在每个这样的地方,我需要观察一个集合并对更改做出反应 - 创建或删除vm实例。这基本上是在许多地方重复的相同代码=>我想只创造一个地方(隐式演员只是一个糖果,它不是解决真正问题所必需的)。或者也许不是静态列表,我应该创建一个管理器来处理我所有类的视图模型实例创建?
答案 0 :(得分:0)
首先,我不确定您的想法是否违反了MVVM模式。在我看来,在每种情况下满足模式并不重要。我眼中的一种模式提出了解决问题的策略。在大多数情况下,无论如何都不值得遵循100%的模式。如果有一个实用的解决方案,你应该使用这个。当然,这应该是引导您实现目标的解决方案,例如:单元可测试,UI分离和应用逻辑等。
无论如何,当我第一次阅读你的文章时,我认为实现一个演员是个好主意。但如果我没有错,您需要在模型中引用视图模型。我总是试图避免这种情况,以最大限度地重复使用机会。但我认为有这样的参考并不违反模式。也许其他人可以更多地了解这一点。
对我而言,经理的想法是最好的方式。我使用类似的方法来创建视图模型。这取决于您需要创建多少视图模型,但您应该创建新视图模型而不是重新使用现有模型。在某处我读到视图模型应该是视图的某种状态机。遵循这个想法,您再也不知道视图模型在重新使用时处于什么状态。因此,首选方法是创建一个新的视图模型。
只是一些想法!也许还有其他一些想法......