我在设计一个UI时,采用了模版引擎实现,为了隔绝和各模版引擎实现的依赖性,我对模版引擎进行了包装,抽象出一层接口层:
Template
- public interface Template {
- public void merge(Context context)throws MergeException;
- }
Context
java 代码
- public interface Context {
- public void clear();
-
- public abstract Writer getOut();
-
- public Object get(String key);
-
- public void put(String key,Object value);
- }
-
TemplateEngine
java 代码
- public interface class TemplateEngine{
-
- public void mergeTemplate(String templateName, Context context,
- Writer pWriter) throws MergeException;
-
- public abstract void mergeTemplate(Template template,
- Context context) throws MergeException;
-
- }
-
但是在各个实现包里却出现了一个非常晦涩的问题:
VelocityTemplateImpl
java 代码
- public class VelocityTemplate implements org.jwebap.ui.template.Template {
-
- private org.apache.velocity.Template _template=null;
-
- public CTLTemplate(org.apache.velocity.Template template){
- _template=template;
- }
-
- public void merge(Context context) throws MergeException {
- Writer writer=context.getOut();
- if(!context instanceof VelocityContext){
- throw new ClassCastException("...");
- }
- ...;
- }
-
- }
-
按照接口语义,对于传进来的任何Context实现,应该都能处理,但是这里确不得不判断是不是一个VelocityContext。
java 代码
分享到:
相关推荐
《java设计模式(第2版)》通过一个完整的java项目对经典著作design patterns一书介绍的23种设计模式进行了深入分析与讲解,实践性强,却又不失对模式本质的探讨。本书创造性地将这些模式分为5大类别,以充分展现各个...
本文不仅探讨了什么是设计模式,而且还探讨了为什么要使用设计模式,以及设计原则具体的作用,还有对接口进行了分析,为什么使用接口可以松耦合,等等,是大家学习设计模式,不会知其然而不知其所以然。相信会对大家...
整个设计模式贯穿一个原理:面对接口编程,而不是面对实现.目标原则是:降低耦合,增 强灵活性. 1:前言 学习GoF 设计模式的重要性 建筑和软件中模式之异同 2:GoF 设计模式 A.创建模式 设计模式之Factory(工厂...
整个设计模式贯穿一个原理:面对接口编程,而不是面对实现.目标原则是:降低耦合,增强灵活性. 建筑和软件中模式之异同 CSDN 的透明特别推崇《建筑的永恒之道》,认为从中探寻到软件的永恒之道,并就"设计模式"写了专门...
它专门针对有一定经验的php程序员,详细讲解了对他们最为重要的主题:高级面向对象、设计模式、文档、测试和标准php库等内容。同时,为适应目前web开发的新趋势,作者还全面探讨了mvc架构和zend framework,以及ajax...
享有盛誉的PHP高级教程,Zend Framework核心开发人员力作,深入设计模式、PHP标准库和JSON 。 今天,PHP已经是无可争议的Web开发主流语言。PHP 5以后,它的面向对象特性也足以与Java和C#相抗衡。然而,讲述PHP高级...
Java 提供了丰富的API,同时又有强大的数据库系统作底层支持,那么我们的编程似乎变成了类似积木的简单"拼凑"和调用,甚至...整个设计模式贯穿一个原理:面对接口编程,而不是面对实现.目标原则是:降低耦合,增强灵活性.
它专门针对有一定经验的php程序员,详细讲解了对他们最为重要的主题:高级面向对象、设计模式、文档、测试和标准php库等内容。同时,为适应目前web开发的新趋势,作者还全面探讨了mvc架构和zend framework,以及ajax...
系统,Davinci技术的硬件产品1Ms320DM6446在一个芯片封装内集成了ARM 嵌入式处理器内核与C64x+数字信号处理器内核,提高了系统集成度、降低了系 统板级成本,双处理器的协同运作效率也有很大提高。本文在对需要实现...
应用场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现。 优势:解耦合 敏捷原则:开放-封闭原则 实例:tableview的 数据源delegate,通过和protocol的配合,完成委托诉求。 列表row个数...
.NET关于string转换的一个小Bug Regular Expressions 完整的在.net后台执行javascript脚本集合 ASP.NET 中的正则表达式 常用的匹配正则表达式和实例 经典正则表达式 delegate vs. event 我是谁?[C#] 表达式计算引擎...
B/S模式及相关实现技术,并基于B/S模式采用JSP和QL SERVER数据库技术设计和实现一个考务管理系统。该系统实现学院自行安排考试时间、地点、监考老师,考办进行考试安排审核,这更切合学院教学需要,降低了考务管理...
对“计算机接口技术”的教学目标、教学体系及教学内容等提出可行性方案,例如:整合原有教学内容,增加微处理器最新进展、新型存储器及总线、基于PCI、USB总线的I/O接口设计、Windows设备驱动程序设计等;...
于是小明想起了当年在软件学院老师经常说需求是很可怕的东西,小明也想到当年将设计模式的老师,小明也想起来当年考试背诵的一段课文,依赖倒置原则,开闭原则,接口隔离原则等等一大串。小明知道有一种代码有一种...
后来为了具备一定的扩展和可靠性,就有了垂直架构,也就是加了个负载均衡,接下来是前几年比较火的SOA,主要讲了应用系统之间如何集成和互通,而到现在的微服务架构则是进一步在探讨一个应用系统该如何设计才能够更...
通过分析和比较数据交换平台的几种常用数据交换模式,对交换平台的系统架构、技术实现模式,设计理念和策略进行探讨分析,提出了一种基于XML的数据交换模式,阐述了XML在平台数据交换的数据表示、数据格式转换、数据...
论文内容既包括了系统的整体设计思路,也深入探讨了具体功能的实现细节,为读者提供了一个全面的学习和参考资料。 源代码部分则是基于Spring Boot框架进行开发的,采用了模块化、分层化的设计思想,使得代码结构...
本课题是专门为计算机组成原理课程开发的一个教学网站,针对这一特点,本文探讨了计算机组成原理教学网站的设计模式,并提出了技术上的解决方案。 本网站前台采用Dreamweaver进行页面制作,后台由Access数据库支持,...