Welcome

首页 / 软件开发 / JAVA / 用Java程序生成文本的捷径

用Java程序生成文本的捷径2009-11-09仙人掌工作室

大多数程序都需要输出一些文本,比如邮件消息、HTML文件或控制台输出。但是,计算机本质上只能处理二进制数据,程序员必须让软件来生成可理解的文本。在这篇文章中,我要介绍的是在生成和输出文本时,为何使用模板引擎能够节省时间。你将了解模板的优点,如何针对不同的情形创建高效的模板。和System.println说再见!

虽然程序员可以很轻松地编写出输出文字信息的代码(因为这毕竟是从Hello World范例学到的第一件事情),但通常而言,程序员不是写作或组织文字信息(如邮件)的最佳人选。因此,我们常常让市场部门或公关部门去做那些事情。但遗憾的是,即使对于最普通的邮件,编写者也常常依赖程序输出来完成任务。无论是对于邮件编写者还是程序员,这种合作方式都很容易带来误解和造成失误。

请看一个例子:一个Java程序从某个数据源收集一些客户信息,通过email给公司的每一个客户发送帐户余额信息。下面是完成这个任务的Java程序(完整的示例程序代码可以从本文最后下载):

for (int i=0; i
{
Customer customer = (Customer)customers.get(i);
StringBuffer message = new StringBuffer();
message.append ("尊敬的先生/女士:");
message.append (customer.getCustName());
message.append (" ");
message.append (" ");
message.append ("您的帐户余额是 ");
message.append (customer.getAccountTotal());
message.append (" ");
message.append (" ");
message.append ("致礼!");
message.append (" ");
message.append ("某某装饰品公司");
// 发送email
mm.sendMail (customer.getFirstName(), customer.getEmail(),
"Account", message.toString());
}

上面的例子可谓发送消息最差劲的方法之一。由于消息嵌入到了程序代码之中,如果没有程序员的帮助,其他人几乎不可能对消息进行编辑。同时,即使对于专业的程序员,如果他不了解代码,要进行编辑也很困难。如果你预见了这些麻烦,把代码写成下面这种形式:

static public final String STR_HELLO="尊敬的先生/女士:";
static public final String STR_MESSAGE="您的帐户余额是 ";
static public final String STR_BEY="致礼! 某某装饰品公司";

如果说上述代码使得消息编辑更容易,那么这种帮助也不会很多。很难要求一个不搞程序设计的人理解static和final的含义。此外,如果要改变消息的结构,上面这种代码也不够灵活。例如,人们可能要求你在邮件消息中加入更多来自数据源的信息,这时,你就得修改构造邮件的代码,或许还要添加更多的static final String对象。