【问题标题】:Spring mvc: One step view or Two Step View?Spring mvc:一步视图还是两步视图?
【发布时间】:2019-09-26 10:28:40
【问题描述】:

我正在阅读 Fauler 的著名著作《企业应用程序模式》 而且我无法理解一步视图(顶部)和两步视图(底部)之间的语义差异

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

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

【问题讨论】:

  • 图片不再是俄语 ;)

标签: java spring-mvc model-view-controller design-patterns


【解决方案1】:

阶段责任

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

  2. 第二阶段能够读取逻辑视图,并负责将其呈现为具有样式、格式和所有我们喜欢的东西的丰富界面。

我们获得视图的方式

您需要制作一些具有下一类对象的 HTML:

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 是一种可以通过 XSLT 转换的好形式,因此我们的第二阶段由一些 XSLT 呈现,它将我们的 XML 转换为一些 HTML 代码,并用页脚、页眉、一些菜单项等包围它。

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

我们可以用这个做什么

该方案将让您:

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

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

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

Two Step View 通过拆分转换来解决这个问题 分为两个阶段。第一个将模型数据转换为逻辑 没有任何特定格式的演示文稿;第二个转换 具有所需的实际格式的逻辑演示。这样你 可以通过更改第二阶段来进行全局更改,或者您可以 支持多种输出外观和感觉,每个都有一个第二阶段。

它与 Spring MVC 的关系如何

Spring MVC 实现了另一种模式——模型-视图-控制器。我们的模式是一个视图部分,我们free to decide 正是视图技术与 Spring MVC 一起使用。如果您会找到一些实现此模式的视图框架,您可以随意将其插入 Spring MVC。

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

如果我们改用一步视图会怎样

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

结论

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

【讨论】:

  • 这只是一个方案。 架构是什么?架构的目的是什么?
  • 因此,您获得了一项功能,可以让您为应用程序制作主题,或者至少可以轻松地对应用程序的外观进行全局更改。我看不出因果关系。 我的应用程序的主题是什么?
  • 如果你使用单步视图,你将不得不改变这种情况下的每一个视图。你能提供任何例子来帮助我理解它吗?
  • 另外你根本没有提到 spring mvc/jsp。
  • @gstackoverflow,稍后我会尝试找到(或者如果我失败了会做)一些示例。 spring-mvc 呢,和这个模式没有关系。请记住,这本书是大约 20 年前写的,它只是包含了如何组织事物以解决某些问题的想法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-07
  • 2010-11-04
  • 2011-06-06
  • 1970-01-01
  • 2012-11-14
  • 2012-04-28
相关资源
最近更新 更多