gpt4 book ai didi

grails - MVC中的模型是 View 显示的业务逻辑还是数据

转载 作者:行者123 更新时间:2023-12-02 15:08:59 24 4
gpt4 key购买 nike

和其他许多人一样,我在理解MVC模式时遇到了问题。更准确地说,让我们谈谈Grail Web应用程序。我的理解是,模型是服务和 Realm 类。 Controller 的典型用法是(实际上,对于这种特定用法,我们可以直接从 Controller 调用Person.get(id),但假设我们通过服务进行调用):

def getPerson(String id){
Person person = peopleService.get(id);
render(view: "person", model: person)
}

在这种情况下,事实证明服务方法已返回域对象,在这种情况下,该对象是Model的一部分。但是服务方法可能不会修改域对象,也不会修改域对象,但是会返回例如 bool(boolean) 值。
def savePerson(Person p){
boolean saved = peopleService.save(p);
render(view: "actionresult", model: saved)
}

在这种情况下, bool(boolean) 值不是Model的一部分,但是在render方法中将其命名为model。

所以我有三个假设:
  • 有两种模型:负责业务逻辑的应用程序层模型和用于呈现 View
  • 的数据
  • MVC完全是表示层模式,与业务逻辑层无关,在这种情况下,模型只是
  • View 显示的数据
  • 模型是服务层和域类, Controller 通过服务方法调用触发模型更新,并且用于呈现 View 的数据应以某种方式表示模型状态,这就是为什么它在呈现函数
  • 中也称为模型的原因

    你怎么看待这件事?

    最佳答案

    我会说您的假设正确-MVC在不同的上下文中可能意味着不同的事情。当您基于MVC模式制作MVC框架或应用程序时,还要定义该上下文中的“模型”。例如,它可以是复杂的域模型,也可以只是数据访问层。

    我认为可以肯定地说,在使用通用MVC框架构建的复杂Web应用程序的上下文中,“模型”不一定与业务逻辑模型相同。网店中“产品”的基本业务模型可以具有有关供应商和购买价格的信息,例如,您可能永远不想在网店界面中公开这些信息。

    因此,在这种情况下,您可能想要使用一个不同的“模型”,该模型向MVC框架公开其部分而非全部属性。

    有一个名为MVVM的概念明确地考虑了这一点。简单地说,“ View 模型”是“适当”模型的映射,用于在特定 View 中显示。

    关于grails - MVC中的模型是 View 显示的业务逻辑还是数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19941585/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com