java - StringTemplate 违反分离?

标签 java model-view-controller stringtemplate

我在 StringTemplate 的介绍中注意到以下内容:

StringTemplate interprets o.p by looking for property p within object o. The lookup rules differ slightly between language ports, but in general they follow the old JavaBeans naming convention. StringTemplate looks for methods getP(), isP(), hasP() first. If it fails to find one of those methods, it looks for a field called p.

这似乎与本文不符:http://www.cs.usfca.edu/~parrt/papers/mvc.templates.pdf

这不是为违反模型/ View 分离打开了大门吗,本质上是允许模型通过调用方法来提取数据?糟糕的程序员可能会编写导致副作用的方法 getP()。 ST 如何“严格”执行关注点分离?

最佳答案

Velocity、FreeMarker、StringTemplate 和 JSP/JSF Expression Language 中的每一种模板语言都是这样做的。

关注点分离是程序员应该关心的事情,而不是 View 。人们应该编写没有副作用的 get/is/has 方法,这样任何人都可以调用它们而不必关心这个。这就是为什么这些方法应该是访问器,并且通常使用 setSomething 调用的方法应该是修改器。

如果有人编写自己的类并决定定义一个有副作用的 getSomething 方法,那么他们违背了普遍的信念,并且工具不应该在处理对象,他们只希望人们聪明,尊重常识,像其他人一样编写代码。

关于java - StringTemplate 违反分离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6440595/

相关文章:

java - 使用 Java Apache PoolingClientConnectionManager 泄漏内存,如何解决?

java - 用整数填充二维数组

java - 邮政编码的 ReGex

c# - 无法将类型 'System.Web.Mvc.RedirectToRouteResult' 隐式转换为 'System.Web.Mvc.JsonResult'

java - 用于 PL/SQL 的 ANTLR 解析器,目标语言为 Java

java - 你如何在 StringTemplate 中显示列表长度

java - org.openqa.selenium.SessionNotCreatedException : A new session could not be created.(原始错误: 'java -version' failed.错误:spawn ENOENT)

javascript - 将 AngularJS 与 MeteorJS 一起使用

model-view-controller - 在 node.js 模块中异步初始化导出可以吗?

java - 如何在 Java 中使用 StringTemplate (ST) 格式化十进制数字?