实例:
在实际的企业应用中,一个公司的系统往往分散在很多不同的地方运行。公司既没有建立全公司专网的实例,有不远让业务数据实时地在广域网上传递。这种的方案啊是各分公司内运行系统独立,每天业务结束时,各分公司导出业务数据、打包、传送给总公司。
导出数据格式会有不同的要求
文本格式、数据库备份格式、Excel格式、Xml格式
分清哪是产品类,哪是工厂类。
public interface ExportFileApi {
public boolean export(String data) throws Exception;
}
public abstract class ExportOperate {
public boolean export(String data) throws Exception
{
ExportFileApi api=factoryMethod();
return api.export(data);
}
protected abstract ExportFileApi factoryMethod();
}
//文本格式
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class ExportTxtFile implements ExportFileApi{
@Override
public boolean export(String data) throws Exception {
String fp="E:\\miaomon\\record.txt";
File f=new File(fp);
BufferedWriter bw=null;
FileWriter fw=null;
fw=new FileWriter(f,true);
bw=new BufferedWriter(fw);
bw.newLine();
bw.write(data);
bw.close();
fw.close();
return true;
}
}
public class ExportTxtFileOperate extends ExportOperate{
@Override
protected ExportFileApi factoryMethod() {
return new ExportTxtFile();
}
}
//数据库备份
import java.sql.*;
public class ExportDB implements ExportFileApi{
@Override
public boolean export(String data) throws Exception {
String drivrName= "com.mysql.jdbc.Driver";
String userName="root";
String userPwd="1106";
String dbNAme="lianxi";
String url1="jdbc:mysql://localhost:3306/"+dbNAme;
String url2="?user="+userName+"&password="+userPwd;
String url3="&useUnicode=true&characterEncoding=UTF-8";
String url=url1+url2+url3;
Class.forName(drivrName);
Connection conn=DriverManager.getConnection(url);
String sql="insert into company(data)values(?)";
PreparedStatement pstmt=conn.prepareStatement(sql);
pstmt.setString(1, data);
int n=pstmt.executeUpdate();
if(n==1){System.out.print("数据插入操作成功!");}
else{System.out.print("数据插入操作失败!");}
if(pstmt!=null)
pstmt.close();
if(conn!=null)
conn.close();
return true;
}
}
public class ExportDBOperate extends ExportOperate{
@Override
protected ExportFileApi factoryMethod() {
return new ExportDB();
}
}
//导出excel
import java.awt.Label;
import java.awt.List;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import jxl.Workbook;
import jxl.write.WritableCell;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
public class ExportExcel implements ExportFileApi{
@Override
public boolean export(String data) throws Exception {
String fp="E:\\miaomon\\record.xls";
File f=new File(fp);
//ArrayList<String> list=new ArrayList<String>();
StringBuffer sb=new StringBuffer();
WritableWorkbook wb=null;
wb=Workbook.createWorkbook(f);
if(wb!=null)
{
WritableSheet s=wb.createSheet("sheet1", 0);
jxl.write.Label l=new jxl.write.Label(0,0,data);
s.addCell(l);
int rows=1;
for(int j=1;j<rows;j++)
{
Label l1=new Label(data);
s.addCell((WritableCell) l1);
}
wb.write();
wb.close();
}
return true;
}
}
public class ExportExcelOperate extends ExportOperate{
@Override
protected ExportFileApi factoryMethod() {
return new ExportExcel();
}
}
//超出xml
package 设计模式;
import java.io.File;
import java.io.FileOutputStream;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
public class ExportXML implements ExportFileApi{
@Override
public boolean export(String data) throws Exception {
Document document = DocumentHelper.createDocument();
Element rss = document.addElement("rss");
rss.addAttribute("version", "2.0");
Element channel = rss.addElement("VALUE");
Element title = channel.addElement("NAME");
title.setText(data);
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
File file = new File("E:\\miaomon\\record.xml");
XMLWriter writer = new XMLWriter(new FileOutputStream(file), format);
writer.setEscapeText(false);
writer.write(document);
writer.close();
return true;
}
}
public class ExportXMLOperate extends ExportOperate{
@Override
protected ExportFileApi factoryMethod() {
return new ExportXML();
}
}
public class Client {
private String gs;
private String data;
private ExportOperate o;
public Client(String gs,String data)
{
this.gs=gs;
this.data=data;
}
public String getGs() {
return gs;
}
public void setGs(String gs) {
this.gs = gs;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public ExportOperate getO() {
return o;
}
public void setO(ExportOperate o) {
this.o = o;
}
public void Exportdata() throws Exception {
if (gs.equals("txt")) {
o = new ExportTxtFileOperate();
} else if (gs.equals("db")) {
o = new ExportDBOperate();
} else if (gs.equals("xls")) {
o = new ExportExcelOperate();
}
o.export(data);
}
}