Velocity在Roller中的应用

Velocityjava世界中出现比较早,也比较成熟的、性能比较好的、应用也比较广泛的模板框架。

 

所谓模板,就是定义一套不变的模型,并用其生成一些动态的东西。最常见的是应用场景是动态网页,我们知道一些网页大部分内容是不变的,只有少数内容需要改变,比如当前浏览网页的用户名等。除了这种场景,在自动生成代码方面,模板技术的应用也是常见的。

 

那么,在Rollervelocity是被用来干什么呢?简单地说,其实也是用来生成网页的。不过,除了生成网页,还要把生成的结果缓存起来。

 

本文中主要讨论Roller如何应用velocity进行设计及其启示。以下是Roller关于velocity的类图:

Roller定义了两个类:RendererRendererManager,在Roller中所有跟velocity相关的操作都从这两个类开始!

 

可能你有点疑惑,模板有很多,并且放置的地方也不同。这两个类怎么知道我要的是那个模板?

 

RendererManager的静态方法 getRenderergetRenderer(Template template)中,参数带有一些关于模板的信息,比如名称、ID等。其实,RendererManagerVelocityRendererFactory代为其干活。VelocityRendererFactory简单new 一个VelocityRenderer对象并将其返回给应用。

 

VelocityRenderer对象被实例化的时候将得到一个真正的Velocity  模板对象,真正干活的也是Velocity,不是RollerVelocityRenderer

 

VelocityRenderer是如何得到Velocity的模板对象的呢?答案是通过RollerVelocity

RollerVelocity会被实例化一个Velocity引擎,并且通过Velocity的专有配置文件Velocity.properties文件确定有那些渠道可以取到模板!见类图中的ResourceLoader实现类。

 

启示:

1、我们在工作中会用到很多第三方软件(如,Velocitypoijxl等),我们是否也为用到这些第三方软件的同事屏蔽如何使用第三方软件(即会用RendererRendererManager即可)?这样其他人就不需要花时间去学习如何使用第三方软件了,既提高效率又利于维护。

 

2、如果有更好的模板技术出现,你要让它代替Velocity,工作量如何?怎么做?

 

3、当前我用Roller进行二次开发,有一个客户关系模块需要应用模板技术进行个性化的发送邮件、短信。我实现起来非常方便,分别实现加载邮件、短信模板的ResourceLoader就可以了,其他地方不需要改动。难道设计Roller的人预见我会有这个需求了吗?

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值