Web applications 我应该为页面元素创建模型和DAO类吗?

Web applications 我应该为页面元素创建模型和DAO类吗?,web-applications,model-view-controller,architecture,dao,Web Applications,Model View Controller,Architecture,Dao,有趣的问题:在电影院的MVC web应用程序中,我有Model类,比如Film和Showing。此外,我还有DAO类,如FilmDAO和ShowingDAO从数据库检索数据 我的问题是,我应该为不是真正的“实体”,而只是页面元素的东西创建类吗?我指的是像Carousel或Sidebar这样的类,以及它们相应的DAO 我认为有一个SidebarDAO真的很奇怪,但是从控制器的数据库中检索到的东西会显示在页面上…您所指的模型,如电影会反映视图所使用的数据。这是MVC中的M。事实上,我喜欢将它们视为视

有趣的问题:在电影院的MVC web应用程序中,我有Model类,比如
Film
Showing
。此外,我还有DAO类,如
FilmDAO
ShowingDAO
从数据库检索数据

我的问题是,我应该为不是真正的“实体”,而只是页面元素的东西创建类吗?我指的是像
Carousel
Sidebar
这样的类,以及它们相应的DAO


我认为有一个
SidebarDAO
真的很奇怪,但是从控制器的数据库中检索到的东西会显示在页面上…

您所指的模型,如
电影
会反映视图所使用的数据。这是MVC中的M。事实上,我喜欢将它们视为视图模型,因为您可能希望它们针对特定视图进行优化。因此,每个视图都有其特定的视图模型;当然,您可以在其中重用特定的通用模型

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

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


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

请阅读并停止将它们称为“模型”@tereško,那么,在你看来,
电影
侧栏
都是我的应用程序的域对象,因此,它们应该以相同的方式处理?实际上,
侧栏
将是一个应用程序,供视图使用。此外,你可能会发现这有点有用:谢谢@tereško。我一直在读你一些有趣的答案。。。只有一个问题:您所谓的表示对象与L-Three metions在下面的回答中定义的ViewModel类几乎相同,或者这里定义的类,例如:,或者它们不是?“ViewModel”实际上代替了MVVM中的“控制器”。当您无法控制模型的API或/和视图时(通常是在进行第三方系统集成时),可以使用该结构。FuelPHP的“视图模型”只是对。。。你真的不应该从Fuel学习应用程序架构。Thnaks,ViewModel类的概念很有趣,我以前从未听说过。。。