使用 Translator 模式构建更好的网站(5)_Windows教程
Translator 使用 processForm() 清除以前显示的错误,并从提交的表单中分析此信息。当 servlet 接收到一个提交的表单时,它就会将对该表单的处理委托给 Translator。在本委托期间,Translator 分析提交表单的值,并将这些值分别存储在 String 变量中。这些存储变量随后通过 syncModelToGui()(由 servlet 调用)转换为业务对象的值。
syncGuiToModel() 和 syncModelToGui() 是两个类似的方法,顾名思义,其中一个方法按某个方向对值执行同步,而另一个方法按相反的方向执行同步。syncGuiToModel() 从业务对象的属性中提取这些值,并使用 Object Translator 预先格式化每个属性值。Object Translator 将值预先格式化为要在屏幕上显示的值。随后,它将 Translator 的对应 String 变量设置为这个值。syncModelToGui() 执行的操作相同,但方向相反。下面是从典型的 syncGuiToModel() 中摘出的一小段代码:
DoubleTranslator dtDouble = new DoubleTranslator(); String sTemp = dtDouble.translate(loan.getInterestRate()); setInterestRate(sTemp); |
为了使转换代码具有最大的可重用性,并为整个站点提供一种共同的转换,syncGuiToModel() 和 syncModelToGui() 使用的都是 Object Translator 类。Object Translators 与 Translator 对象联系得如此紧密,以致于几乎可将它们看作是 Translator 对象的规则。Object Translator 类是一个简单的类,它的唯一用途就是将一种数据类型转换为格式化字符串,以及将格式化字符串转换为它的数据类型。下面是一个很简单的 Object Translator 类的代码:
public class DoubleTranslator extends ObjectTranslator public double translate(String stringToBeTranslated) throws Exception try { return dRV; |
当这个样例 Object Translator 将 double 转换为格式化的 String 时,它只需调用 Double.toString()。这个方法可实现更强大的功能,例如,可以添加几行代码,使得当格式化类似 1000.25 这样的大 double 值时,可预格式化这个值,以便显示为 1,000.25。
对于 DoubleTranslator.translate(String),须注意的重要一点是,它会发出一个可读性很好的异常,而不是标准的 Java.lang.NumberFormatException 异常。JSP 文件将此异常的消息直接显示给网站访问者,因此,让网站的普通访问者很容易地理解该方法发出的异常是非常重要的。
4. 小结
使用 Translator 模式框架的优点很多,不仅可以降低网站的成本,而且可以提高用户的满意度。由于不同组件都只执行专门的任务,因而网站的构建成本降低了。这些专门任务分配给生产小组,如 HTML 小组或 Java 程序员小组。因为 Translator 模式的 ObjectTranslators 在整个网站重用,所有全部格式化和分析都是以相同的方式进行的。因为每项任务都以相同的方式完成,所以网站访问者就能够以一致的方式查看整个网站的信息。这进一步提高了用户的满意度。
- 相关链接:
- 教程说明:
Windows教程-使用 Translator 模式构建更好的网站(5)。