什么是用户界面设计模式中的模型,如MVC,MVP,MVVM?

我已经看过许多使用模型 – 视图UI设计模式的教程和示例,并且它们都以非常不同的方式实现它们,尤其是模型部分。 在一些示例中,Model是某些服务层中某些数据访问层(如存储库模式)中的数据(某些数据库的实际对象表示)…
如果有人告诉你他在他的应用程序中使用MV *模式,它会告诉你有关应用程序设计的内容吗? 它是否在对象图中维护数据库的内存表示,并将其用作数据源或某些数据访问层来查询数据库…

您将选择什么作为面向数据的智能客户端应用程序的模型,主要包含带有表的选项卡页面?

单词模型至少用于两种感官。 有你的域名模型。 这意味着你如何表示你的数据。 有许多方法可以构建数据,还有许多方法可以访问它。 当我们在这个意义上谈论模型时,我们并不特别关注你如何访问构成它的结构,即数据访问或持久层,尽管你也可能听到人们谈论持久性模型。 通过这种方式,人们意味着持久性实现使用的特定哲学,例如ActiveRecord或Repository。 您可能还会听到这些被称为模式的内容。

最后,单词模型在视图上下文中的MVC,MVP和MVVM中具有非常特定的含义。 在该上下文中,它表示与视图关联的特定数据对象,即视图模型。 这可能是您的域对象之一,但更典型的是,它是一个视图特定的对象,它封装来自一个或多个域对象的数据以及辅助数据,例如特定视图使用的用户数据。

对于您的应用程序,请选择最适合您的开发环境和语言的持久性模型 – MS世界中的LINQ to SQL,LINQ to Entities,nHibernate,Castle ActiveRecord等为每个视图创建特定于视图的模型(类)保存该视图所需的数据。 使用控制器查询域模型,以提取视图所需的信息并将其映射到视图模型上。

如果有人说,他正在使用MV *模式,这意味着应用程序被分成几个部分,没有直接引用特定类型,它没有说明实际的实现。 MVVM意味着,你有一个Model,一个ViewModel和View部分,就是这样。

该模型是您的数据存储。 这并没有说明它的任何实现,它可以是任何东西,取决于手头的任务。 但是,应该使用接口访问它,以便您可以快速交换实现。 从某种意义上说,这是MVVM模式的重点 – 通过接口将三层分离。

您的描述听起来很像我的项目 – 我使用sqlite作为后备存储,entity framework为ORM。 但是,我还使用T4生成Dto对象,然后通过ViewModel中的automapper进行映射,因为那些只需要数据,而不是持久性。

该模型通常指的是数据层,但正如我所发现的,在MVC中,这在实现ntier方法时可能会有点麻烦。 原因是模型不包含在它自己的程序集中。

以下是我对类似问题的一些非常有用的反馈。 对MVC和实体模型的困惑

可以将模型视为数据容器,其有助于向/从数据源(即数据库等)呈现呈现组件和/或持久化数据。 除了数据容器元素之外,模型可以包含或不包含行为,这取决于相应体系结构的设计上下文。

虽然术语“模型”经常在模型 – 视图 – 控制器模式上下文中讨论和使用,但它是当前软件体系结构中最重要的考虑因素之一。

您可能希望查看以下文章 ,其中描述了与演示组件和模型相关的少数流行和新设计模式。