@@@模式定义:
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
@@@练习示例:
继续工厂方法模式中的导出数据的应用框架。
@@@示例代码:
\export\ExportHeaderModel.java
\export\ExportDataModel.java
\export\ExportFooterModel.java
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\export\ExportToTxt.java
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
@@@练习示例:
继续工厂方法模式中的导出数据的应用框架。
@@@示例代码:
\export\ExportHeaderModel.java
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
package export;
/**
* 描述输出到文件头的内容的类
*/
public class ExportHeaderModel {
/**
* 分公司或门市点编号
*/
private String depId;
/**
* 导出数据的日期
*/
private String exportDate;
public String getDepId() {
return depId;
}
public void setDepId(String depId) {
this.depId = depId;
}
public String getExportDate() {
return exportDate;
}
public void setExportDate(String exportDate) {
this.exportDate = exportDate;
}
}
\export\ExportDataModel.java
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
package export;
/**
* 描述输出数据的类
*/
public class ExportDataModel {
/**
* 产品编号
*/
private String productId;
/**
* 销售价格
*/
private double price;
/**
* 销售数量
*/
private double amount;
public String getProductId() {
return productId;
}
public void setProductId(String productId) {
this.productId = productId;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
}
\export\ExportFooterModel.java
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
package export;
/**
* 描述输出到文件尾的内容的类
*/
public class ExportFooterModel {
/**
* 输出人
*/
private String exportUser;
public String getExportUser() {
return exportUser;
}
public void setExportUser(String exportUser) {
this.exportUser = exportUser;
}
}
\export\ExportToTxt.java
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
package export;
import java.util.Collection;
import java.util.Map;
/**
* 导出数据到文本文件的类
*/
public class ExportToTxt {
/**
* 导出数据到文本文件
* @param ehm 文件头的内容
* @param mapData 数据的内容
* @param efm 文件尾的内容
*/
public void export(ExportHeaderModel ehm,
Map<String, Collection<ExportDataModel>> mapData,
ExportFooterModel efm) {
// 用来记录最终输出的文件内容
StringBuffer buffer = new StringBuffer();
// 1: 先来拼接文件头的内容
buffer.append(ehm.getDepId() + ", " + ehm.getExportDate() + "\n");
// 2: 接着来拼接文件体的内容
for (String tblName : mapData.keySet()) {
// 先拼接表名称
buffer.append(tblName + "\n");
// 然后循环拼接具体数据
for (ExportDataModel edm : mapData.get(tblName)) {
buffer.append(edm.getProductId() + ", " +
edm.getPrice() + ", " + edm.getAmount() + "\n");
}
}
// 3: 最后来拼接文件尾的内容
buffer.append(efm.getExportUser());
// 为了演示的简洁性,省略写输出文件的代码
// 把要输出的内容输出到控制台看看
System.out.println("