`
huangyh
  • 浏览: 62404 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

E3TemplateEngine一个通用的模板引擎

阅读更多
一个通用的模板引擎,支持Velocity,WebMacro,Freemarker和jxp. 希望对你有用,欢迎下载交流:)
分享到:
评论
8 楼 javatar 2007-07-11  
TemplateEngineFactory不用新开一个包,可以想办法使其不依赖具体适配的产品,也只有这样,当第三方实现新的适配产品时,也可以注册到此工厂,而不需要修改TemplateEngineFactory类,也符合最基本的开闭原则。

TemplateEngineFactory应放入net.jcreate.e3.templateEngine而不是net.jcreate.e3.templateEngine.support的原因是,net.jcreate.e3.templateEngine包是API(Application Programming Interface)包,而net.jcreate.e3.templateEngine.support是SPI(Service Provider Interface)包,TemplateEngineFactory主要目的是给直接用户使用的,所以其应放入API包,如果只单是纯给第三方扩展用的,则应放入SPI包。
7 楼 javatar 2007-07-11  
public Context put(String key, Object value);
此函数所支持的“链式调用”风格是有争议的,
它违反“针对契约设计”中的“区分查询与命令”
因为put函数是有“副作用”的,它引起Context的内部状态改变,
所以它是一个“命令”式的函数,其返回值应该为void。
6 楼 huangyh 2007-07-10  
引用

按理论TemplateEngineFactory应该放在net.jcreate.e3.templateEngine包下,


如果放在net.jcreate.e3.templateEngine包下,是不是也是循环依赖? 具体适配的产品依赖net.jcreate.e3.templateEngine包,
TemplateEngineFactory也会依赖具体适配的产品.

如果要解决循环依赖的问题,是不是要新建一个包?那这个包又叫什么名字? facade??


5 楼 huangyh 2007-07-10  
我定义的模板引擎接口是
public interface TemplateEngine {
	public void mergeTemplate(Template pTemplate,
			                  Context pContext,
			                  Writer pWriter) throws MergeTemplateException;
}

子所有定义了一个Template对象,而不是String templateName,是因为当是文件模板时,需要client设置模板文件的编码方式.
使用Context而不是用Map,因context的put返回的Context,那样我向里面设置模板变量比较方便,可以这样new DefaultContext().put("a","avalue)
.put("b","bvalue);
4 楼 javatar 2007-07-10  
刚才有空分析了一下你项目的CC,Ce,Ca等值,
发现:
net.jcreate.e3.templateEngine.support.TemplateEngineFactory
的分包有问题。
它引起:
net.jcreate.e3.templateEngine.freemarker
net.jcreate.e3.templateEngine.jxp
...
这些包与:
net.jcreate.e3.templateEngine.support
形成循环依赖。

按理论TemplateEngineFactory应该放在net.jcreate.e3.templateEngine包下,

且TemplateEngineFactory不应该依赖于具体适配的产品,
可以用一个配置来注册,或者IoC。
3 楼 javatar 2007-07-10  
和commons-logging的想法差不多,还不错,

即然是通用接口,
你应该满足用户最直接的调用期望,
不要出现那么多接口关系。

如,可以只提供一个接口:
public interface TemplateEngine {

    public void mergeTemplate(String templateName, Map model, Writer output) throws MergeTemplateException;

}

所有参数都应该是大家熟悉的数据封装类,以降低学习成本。
具体怎么和Context, Template打交道,可以在内部进行适配。
2 楼 huangyh 2007-07-10  
呵呵,名字来源Common-log ,感觉跟那东西性质差不多
1 楼 javatar 2007-07-10  
这个工具应该叫TemplateAdapter合理些。

相关推荐

    易语言E3D游戏引擎7个例程rar

    《易语言E3D游戏引擎7个例程详解》 易语言,作为一款中国本土的编程语言,以其独特...每个例程都是一次学习的机会,通过解构、分析和修改代码,读者能够更全面地理解E3D引擎的工作原理,从而在自己的项目中灵活运用。

    (未)大气E3D文字logo动画AE模板.zip

    【标题】:“未大气E3D文字logo动画AE模板.zip”是一个包含Adobe After Effects(简称AE)项目的压缩包,主要用于创建具有专业外观的大气、动态的文字和logo动画。E3D,全称Element 3D,是AE中的一个强大插件,能够...

    E3D引擎代码

    E3D,全称为"Easy 3D Engine",可能是一个简易但功能强大的3D游戏引擎,旨在简化3D应用程序的开发过程。它可能包含了一系列核心组件,如渲染系统、物理引擎、场景管理、动画系统以及脚本支持等,以帮助开发者快速...

    E3Dengine游戏引擎

    安装后,用户通常会得到一个集成的开发环境,包括编辑器、资源管理器、脚本编辑器等组件,便于进行游戏开发工作。在使用前,请确保阅读软件的使用许可协议,尽管描述中提到无版权问题,但为了合法使用,还是建议用户...

    E3tree开发文档

    E3.Tree是一个在E3平台上构建树形UI(如菜单、树、外挂栏等)的组件。这个组件的特点在于其部署简便,只需要将相关的jar文件放入WEB-INF/lib目录下即可。E3.Tree提供API和taglib两种使用方式,适应性强,支持包括...

    E3Tree开发文档

    - `E3-TemplateEngine.jar`: E3平台的模板引擎适配器。 - `commons-logging.jar`: Apache Commons Logging库。 - `log4j-1.2.14.jar`: Apache Log4j库。 - `commons-collections-2.1.1.jar`: Apache Commons ...

    E3和E3PLUS中文手册

    ### AB E3及E3 Plus综合保护器知识点详解 #### 一、产品概述 ##### 1.1 简介 AB E3及E3 Plus综合保护器是针对电动机和驱动系统的保护设备,旨在通过先进的监测技术和智能算法提供全方位的保护。E3系列适用于各种...

    E3 plus 中文用户手册

    - 在 **DeviceNet** 网络中,每个设备都有一个唯一的节点地址。 - 设置节点地址时,需要遵循网络规划的要求,避免地址冲突。 - 用户可以使用相应的工具软件对 **E3 Plus** 的 **DeviceNet** 参数进行配置,如波特率...

    联想 H61-IS6XM-Q65-Q67通用BIOS 支持I7 E3等CPU

    联想 H61-IS6XM-Q65-Q67通用BIOS 支持I7 E3等CPU ,9HKT40A 9HKT43A 9HKT46A 9HKT50A 9HKT51A 9HKT53A 9HKT54A 9HKT58A 系列升级 支持联想ThinkCentre M81,M91,M91p / ThinkStation E30 think M6300T,M8300T 9HKT...

    海宏E3财务报表模板.rar

    海宏E3的损益表模板涵盖了销售收入、营业成本、税前利润等多个关键指标,可以帮助企业快速计算出经营成果,分析盈利状况,及时调整经营策略。 再者,现金流量表则揭示了企业现金的流入和流出情况,反映了企业的偿债...

    E3(Ease Template) 110110.rar

    E3(Ease Template)模板能够改善网站的结构,其特点有: * 可以在几秒钟改变整个站点的外观; * 可以让网站更容易实现多语言; * 抽象程序设计,没有垃圾HTML代码; * 稳定性能初期的强大甚至超越混编代码; * ...

    E3组件 含源码 例子应用及word教程

    这个WAR文件很可能包含了E3组件的一个完整示例应用,可以部署在支持Servlet的Web服务器上运行,以直观地查看和测试E3组件的功能。 "E3Resource鍙傝€冩墜鍐孾1.2].doc"则是E3组件的Word教程文档,它应该详细介绍了...

    AVEVA最新三维工厂设计软件E3D.pdf

    AVEVA最新三维工厂设计软件E3D是一款革命性的设计工具,可以满足工厂设计领域的各种需求。该软件整合了多种技术,包括激光扫描数据、三维几何学、强大的绘图工具和直观的用户界面,满足一般常见设计任务的需求。 ...

    E3 1230v5 e3 pro gaming Mojave-10.14.6-EFI.zip

    处理器 英特尔 Xeon(至强) E3-1230 v5 @ 3.40GHz 四核 主板 华硕 E3 PRO GAMING V5 ( 100 Series/C230 Series 芯片组 Family - A14A ) 内存 16 GB ( 英睿达 DDR4 2666MHz ) 主硬盘 七彩虹 SL500 360GB ( 360 GB / ...

    E3D-Engine:3D渲染引擎

    有效的3D引擎 渲染系统使用的OpenGL及OpenGL ES,Windows上的OpenGL ES使用AMD的ES模拟器。 环境部署 Win32环境配置 编辑器 将proj_win32/RenderSystem/gles_renderSystem/GLES/dll中的dll文件proj_win32/bin/Editor...

    e3tree 树控件的使用

    E3Tree是一个专门用于生成和管理这种树状数据的控件,它支持在B/S(浏览器/服务器)和C/S(客户端/服务器)架构下工作。本文将详细介绍E3Tree的使用,包括API使用方法和Taglib的运用。 一、E3Tree概述 E3Tree控件...

    AB智能马达E3用户手册

    综上所述,“AB智能马达E3用户手册”是一份全面的技术文档,不仅包含了E3系列智能马达保护器的基本信息,还详细介绍了其安装、配置及故障排除等方面的操作指南。通过对这些知识点的学习,用户能够更加熟练地掌握E3...

Global site tag (gtag.js) - Google Analytics