折腾这篇文章也快一个小时了,转载请注明出处http://blog.youkuaiyun.com/zhouyuqwert/article/details/8682535
最近因为一些需要,稍微学了下freemarker,基本使用算了解了,本以为模板解析方式同JSP相同,会先解析生成Servlet
再仔细看了下源码,发现还是很大不同的,虽然最终也是解析成HTML,response.write出去,中间思路看了下还是很不错的。
主要用到访问者模式和解释器模式结合来解析freemarker中的表达式,并分别赋值。
先来看看什么是访问者模式,什么是解释器模式,再来分析下freemarker如何使用的。
1.访问者模式
根据GoF描述,主要在为基本固定的一些元素更方便地添加操作的,将数据结构与其操作解耦和。

譬如针对二叉树的遍历时,二叉树节点类型为Element,当访问到这个节点对象时,需要输出操作,即可以将该操作定义到Visitor中,
这样做的好处是,我不用关心是哪个操作,由visitor来定义,当是前序遍历时,传入ConcreteVisitor1来进行一些操作,当是后序遍历
时传入ConcreteVisitor2来进行另外一些操作,而且今后如果还要对中序遍历每个节点要有不同操作,只需增加一个相应操作的ConcreteVisi