繁体   English   中英

Spring mvc:一步视图还是两步视图?

[英]Spring mvc: One step view or Two Step View?

我正在阅读着名的 Fauler 的书“企业应用程序模式”并且我无法理解一步视图(顶部)和两步视图(底部)之间的语义差异

在此处输入图像描述

我阅读了所有文本,但我只了解一件事:在两步视图的情况下,我有 1 个额外的中间逻辑视图。 这是由某个全局“实体”执行的。

我真的不清楚我为什么需要它。 在我的实践中,我将 spring - mvc 用于 web 应用程序。 你能解释一下这个框架中使用了哪种模式吗? 我可以选择/改变它吗?

阶段责任

  1. 第一阶段将 model 转换为逻辑视图 - 您可以将其视为以某种通用形式描述的 model(Fowler 为此目的使用 XML)。

  2. 第二阶段能够读取逻辑视图,并负责将其渲染为具有 styles、格式化和所有我们喜欢的东西的丰富接口。

我们获得视图的方式

您需要制作一些 HTML 具有下一个 class 的 object:

public class Customer {
    private String name; //value: John Snow
    private String address; //Winterfell
}

在第一阶段,您将客户数据转换为逻辑视图:

<screen>
<title>Customer data</title>
<name>John Snow</name>
<address>Winterfell</address>
</screen>

XML is a good form to be transformed by XSLT, so our second stage is presented by some XSLT that transform our XML to some HTML code and surround it by footer, header, some menu items, etc.

现在我们有一个方案:model -> 第一阶段 -> xml -> 第二阶段(XSLT) -> html -> 用户

我们可以用这个做什么

该方案将让您:

  1. 为您的应用程序创建一些主题。 在此示例中,您可以使用 XSLT 脚本作为主题。 你改变了主题,你的应用程序外观也会改变。
  2. 通过仅更改一个 XSLT 脚本对应用程序外观进行一些全局更改。

如果您使用单步视图,则在这种情况下您将不得不更改每个视图。

福勒是这样描述的。 您可能会觉得这很有趣,因为在您的本书版本中,它可能会以不同的方式进行描述:

两步视图通过将转换分为两个阶段来处理这个问题。 第一个将 model 数据转换为没有任何特定格式的逻辑表示; 第二个将逻辑表示转换为所需的实际格式。 这样,您可以通过更改第二阶段来进行全局更改,或者您可以支持多个 output 外观和感觉,每个外观和感觉都有一个第二阶段。

它与 Spring MVC 有何关系

Spring MVC 实现了另一种模式 - model-view-controller。 我们的模式是一个视图部分,我们可以自由决定与 Spring MVC 一起使用的确切视图技术。 如果您会找到一些实现此模式的视图框架,您可以随意将其插入 Spring MVC。

如果您不知道为什么需要使用两阶段视图模式,那么您可能不需要。 在我的经验中,我从未见过在我从事过的任何项目中实现这一点。

如果我们改用一步视图怎么办

在这种情况下,如果我们需要对应用程序外观进行全局更改,我们必须更改为用户生成 html 的每个视图。

结论

请记住,这本书是大约 20 年前写的,如今我们拥有许多 20 年前不存在的伟大技术。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM