MVVM中的模型:业务对象还是别的什么?

ser*_*ist 9 silverlight model mvvm

我正试图掌握MVVM,所以我读了很多文章 - 大多数都集中在View - > ViewModel关系上,并且对于什么是关于什么的一致意见.ViewModel - > Model关系以及构成Model的内容得到的重点较少,并且存在分歧.我很困惑,想要一些帮助.例如,本文将Model描述为业务对象,而本文描述了一个管理业务对象的类.这些都是正确的还是其他的?

Ska*_*ful 0

模型增加的价值在于它与 ViewModel 和 View 的解耦。想想如果您必须在 ViewModel 中构建和维护业务逻辑,您将会有大量重复代码。

例如 - 如果您有一个带有 GearBoxView(CockpitView 中的控件)、CarViewModel 和 CarModel 的汽车游戏 - 从 CarViewModel 中抽象出 CarModel 中的内容的优点是 CarModel 可以在 WorldViewModel 和任何其他 ViewModel 中使用。CarModel 可以与其他模型(GearsModel、WheelModel 等)建立关系。

您的问题特别询问了有关使用模型作为业务对象或管理业务对象的问题:我的答案是它可以同时做到这两点 - 并且应该对两者负责。

这是一个例子

public class WorldModel //Is a business object (aka game object)
{
    private List<CarModel> _cars;
    public List<CarModel> Cars
    {
        get //Here's some management of other business objects
        {
            //hits NetworkIO in a multiplayer game
            if(_cars == null)
            {
              _cars = myExternalDataSource.GetCarsInMyGame();
            }
            return _cars;
        }
    }
    public Level CurrentRaceCourse { get; set; }
    public CourseTime TimeElapsed { get; set; }
}
Run Code Online (Sandbox Code Playgroud)