我在StringTemplate的介绍中注意到以下内容:
StringTemplate解释o.p by 寻找对象内的属性p O操作。查找规则略有不同 语言端口之间,但一般情况下 他们遵循旧的JavaBeans命名 惯例。 StringTemplate寻找 方法getP(),isP(),hasP()首先。 如果找不到其中一个 方法,它寻找一个叫做的字段 第
这篇文章似乎没有提及:http://www.cs.usfca.edu/~parrt/papers/mvc.templates.pdf
通过调用方法基本上允许模型提取数据,这是否打开了违反模型/视图分离的大门?一个糟糕的程序员可能会编写一个导致副作用的方法getP()。 ST如何“严格”执行此处的关注分离?
答案 0 :(得分:6)
每一个模板语言都是如此,Velocity,FreeMarker,StringTemplate和JSP / JSF表达语言。
关注点的分离是程序员应该关心的,而不是视图。人们应该编写无副作用的get / is / has方法,这样任何人都可以调用它们而不必关心它。这就是为什么这些方法应该是访问器,并且通常使用 setSomething 调用的方法应该是mutators。
如果某人编写了自己的类并决定定义一个具有副作用的 getSomething 方法,那么他们就会违背共同的信念,并且工具在处理时不应该采用每一个假设。对象,他们只是希望人们能够聪明,并且会像其他人所写的那样尊重常识并编写代码。