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

时间:2011-01-02 15:29:17

标签: c# .net design-patterns user-interface

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

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

4 个答案:

答案 0 :(得分:7)

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

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

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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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

以下是我对类似问题Confussion over MVC and entity model

的一些非常有用的反馈

答案 3 :(得分:0)

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

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

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