设计模式之生成器模式(Builder)也叫建造者模式 (四)

2014-11-24 10:26:36 · 作者: · 浏览: 2
d("\n");


// 为了演示简洁性,这里就不去写输出文件的代码了
// 把要输出的内容输出到控制台看看
System.out.println("输出到XML文件的内容:\n" + buffer);
}
}

package demo07.builder.example1;


import java.util.Collection;
import java.util.Map;


/**
* 导出数据到XML文件的对象
*/
public class ExportToXml {
/**
* 导出数据到XML文件
*
* @param ehm
* 文件头的内容
* @param mapData
* 数据的内容
* @param efm
* 文件尾的内容
*/
public void export(ExportHeaderModel ehm, Map> mapData, ExportFooterModel efm) {
// 用来记录最终输出的文件内容
StringBuffer buffer = new StringBuffer();
// 1:先来拼接文件头的内容
buffer.append("< xml version='1.0' encoding='gb2312' >\n");
buffer.append("\n");
buffer.append("

\n");
buffer.append(" " + ehm.getDepId() + "\n");
buffer.append(" " + ehm.getExportDate() + "\n");
buffer.append("
\n");
// 2:接着来拼接文件体的内容
buffer.append(" \n");
for (String tblName : mapData.keySet()) {
// 先拼接表名称
buffer.append(" \n");
// 然后循环拼接具体数据
for (ExportDataModel edm : mapData.get(tblName)) {
buffer.append(" \n");
buffer.append(" " + edm.getProductId() + "\n");
buffer.append(" " + edm.getPrice() + "\n");
buffer.append(" " + edm.getAmount() + "\n");
buffer.append("
\n");
}
buffer.append("
\n");
}
buffer.append(" \n");
// 3:接着来拼接文件尾的内容
buffer.append("
\n");
buffer.append(" " + efm.getExportUser() + "\n");
buffer.append("
\n");
buffer.append("\n");


// 为了演示简洁性,这里就不去写输出文件的代码了
// 把要输出的内容输出到控制台看看
System.out.println("输出到XML文件的内容:\n" + buffer);
}
}2.6客户端测试
[java]
package demo07.builder.example1;


import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;


public class Client {
public static void main(String[] args) {
// 准备测试数据
ExportHeaderModel ehm = new ExportHeaderModel();
ehm.setDepId("一分公司");
ehm.setExportDate("2010-05-18");


Map> mapData = new HashMap>();
Collection col = new ArrayList();


ExportDataModel edm1 = new ExportDataModel();
edm1.setProductId("产品001号");
edm1.setPrice(100);
edm1.setAmount(80);


ExportDataModel edm2 = new ExportDataModel();
edm2.setProductId("产品002号");
edm2.setPrice(99);
edm2.setAmount(55);
// 把数据组装起来
col.add(edm1);
col.add(edm2);
mapData.put("销售记录表", col);


ExportFooterModel efm = new ExportFooterModel();
efm.setExportUser("张三");


// 测试输出到文本文件
ExportToTxt toTxt = new ExportToTxt();
toTxt.export(ehm, mapData, efm);
// 测试输出到xml文件
ExportToXml toXml = new ExportToXml();
toXml.export(ehm, mapData, efm);


}
}

package demo07.builder.example1;


import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;


public class Client {
public static void main(String[] args) {
// 准备测试数据
ExportHeaderModel ehm = new ExportHeaderModel();
ehm.setDepId("一分公司");
ehm.setExportDate("2010-05-18");


Map> mapData = new HashMap>();
Collection col = new ArrayList();


ExportDataModel edm1 = new ExportDataModel();
edm1.setProductId("产品001号");
edm1.setPrice(100);
edm1.setAmount(80);


ExportDataModel edm2 = new ExportDataModel();
edm2.setProductId("产品002号");
e