我应该为页面元素创建Model和DAO类吗?

时间:2014-06-12 20:10:06

标签: web-applications model-view-controller architecture dao

有趣的问题:在电影院的 MVC网络应用中,我有模型类,如FilmShowing。另外,我有 DAO 类,例如FilmDAOShowingDAO来从数据库中检索数据......

我的问题是,我应该为不真实的事物创建类吗?实体",但只是页面元素?我的意思是像CarouselSidebar这样的课程,以及他们的通讯员DAO。

我认为拥有一个SidebarDAO真的很奇怪,但是从控制器中检索数据库以显示在页面上的是一些...

1 个答案:

答案 0 :(得分:1)

您所引用的模型(如Film)会显示视图使用的数据。这是MVC中的M.实际上,我喜欢将它们视为视图模型,因为您可能希望它们针对特定视图进行优化。所以每个视图都有其特定的视图模型;在这种情况下,您可以重用特定的通用模型。

这与数据实体无关,数据实体是后端的一部分而不是前端。数据实体只表示存储在数据库中的实体,它们可能与视图模型完全不同。

在您的情况下,Carousel可能只是您在一个或多个页面中使用的控件。这意味着您可以创建一个Carousel视图模型,其中包含轮播的所有信息,以便正确显示所有内容。 Carousel视图模型可以是页面视图模型的属性,该属性将传递给页面。控制器负责以数据实体的形式从数据库获取数据,将这些数据实体映射到页面视图模型和Carousel视图模型,并将它们传递给视图。

如果需要,您可以添加额外的抽象层,以便在控制器和数据层之间有一个服务,应用程序和域层(洋葱架构等);但这一切都取决于您的要求和环境。