Model view controller MVC—是否应该允许视图直接与服务交互,而无需通过控制器
我的架构如下所示:Model view controller MVC—是否应该允许视图直接与服务交互,而无需通过控制器,model-view-controller,spring-mvc,struts2,wicket,mvp,Model View Controller,Spring Mvc,Struts2,Wicket,Mvp,我的架构如下所示: View - Controller - Services class Person{ Long id; String name; String age; String address } 将其中一个视图视为个人详细信息页面。控制器调用 (Person) service.getPerson(1234) 并将Person实例返回到要显示的视图。服务获取人员的方式是通过RESTFul Web服务进行交互 restful服务以以下响应进行响应:
View - Controller - Services
class Person{
Long id;
String name;
String age;
String address
}
将其中一个视图视为个人详细信息页面。控制器调用
(Person) service.getPerson(1234)
并将Person实例返回到要显示的视图。服务获取人员的方式是通过RESTFul Web服务进行交互
restful服务以以下响应进行响应:
1234
无名氏
/person/1234/detail
上面的响应映射到一个名为Person的类,该类的外观如下:
View - Controller - Services
class Person{
Long id;
String name;
String age;
String address
}
一个完整的person对象可以通过让person通过
/person/1234
然后详细介绍一下
/person/1234/detail
假设视图需要显示人员详细信息
问题:
选项A:控制器是否应该调用服务上的getPerson()和getPersonDetails()来创建一个完整的Person实例
或
选项B:只需getPerson()并让视图调用person.getAge(),它将以某种方式(可能通过方面)触发细节获取
在选项A中,我失去了一些灵活性,但是,它使模型非常愚蠢,我认为这是一件好事,因为在视图中一个坏代码不能污染缓存,因此可能不会引起性能问题。p> 没有“应该”,这要看情况而定。在我看来,允许视图层进行延迟初始化是有风险的,因为很容易在无意中触发大量查询
此外,它使视图层相当智能,因为它现在控制数据初始化,而不是隔离控制器或模型中的数据获取。我喜欢愚蠢的观点,但这可能是偏见,而不是基于纯粹的技术观点