Java 什么是好的文件创建设计模式?
在一个应用程序中,我的任务是创建将由第三方使用的文件。实际上,文件中有三种不同类型的内容:Java 什么是好的文件创建设计模式?,java,file,design-patterns,file-io,Java,File,Design Patterns,File Io,在一个应用程序中,我的任务是创建将由第三方使用的文件。实际上,文件中有三种不同类型的内容: 向第三方应用程序发送数据的员工卡列表 收集生物测量数据的员工卡清单 数字的间隔 目前,我只有一个名为FileGenerator(我认为是通用的、坏名字)的类,它接收数据并创建一个具有某种名称约定(时钟代码、文件类型、日期和小时)的文件 有一个很好的设计模式可以确保文件名约定保持不变,并且可以为每种类型的文件在特定的类中分割文件的生成 有一种很好的方法可以重用生成文件的代码(不要在特定的类中重复我自己) 这
FileGenerator
(我认为是通用的、坏名字)的类,它接收数据并创建一个具有某种名称约定(时钟代码、文件类型、日期和小时)的文件
有一个很好的设计模式可以确保文件名约定保持不变,并且可以为每种类型的文件在特定的类中分割文件的生成
有一种很好的方法可以重用生成文件的代码(不要在特定的类中重复我自己)
这是现有类的一部分:
class FileGenerator {
private List<String> contentOfFile;
private String fileName;
//I - include employees
//C - change employees
//R - remove employees
//B - collect biometry
//N - interval of numbers
private String option;
private void getFileName(){ ... } //this assure the file name convention
public void generate(){ ... } //this generate the file with content
}
类文件生成器{
私有列表目录文件;
私有字符串文件名;
//I-包括员工
//C-更换员工
//R-解雇员工
//收集生物测量学
//N-数的区间
私有字符串选项;
private void getFileName(){…}//这确保了文件名约定
public void generate(){…}//这将生成包含内容的文件
}
到目前为止,我的想法是:
抽象类来保存名称约定。并将内容写入文件
factory类
,该类将知道所有类型的文件(factory是这里使用的好模式吗?)你说的差不多: 1-用于写入文件的模板方法模式。我是这样想的:
public abstract class EmployeeCardFileGenerator {
/**
* @return the generated file name
*/
public abstract String getFileName(/*any params you need to get the file name*/);
/**
* @return the line corresponding to the given data record
*/
public abstract String getLine(EmployeeCardData data);
/**
* @return the header to be appended at the beginning of the file
*/
public abstract String getHeader(/*any header params*/);
/**
* @return the footer to be appended at the end of the file
*/
public abstract String getFooter(/*any footer params*/);
public void generateFile(/*any params*/) {
List<EmployeeCardData> data = queryData();
File f = createFile();
PrintWriter pw = getWriter(f);
pw.println(getHeader());
for(EmployeeCardData ec : data) {
pw.println(getLine(ec));
}
pw.println(getFooter());
cleanup();
}
}
公共抽象类EmployeeCardFileGenerator{
/**
*@返回生成的文件名
*/
公共抽象字符串getFileName(/*获取文件名所需的任何参数*/);
/**
*@返回给定数据记录对应的行
*/
公共抽象字符串getLine(EmployeeCardData数据);
/**
*@返回要附加在文件开头的标题
*/
公共抽象字符串getHeader(/*任何头参数*/);
/**
*@返回要追加到文件末尾的页脚
*/
公共抽象字符串getFooter(/*任何页脚参数*/);
public void generateFile(/*任意参数*/){
列表数据=queryData();
文件f=createFile();
PrintWriter pw=getWriter(f);
println(getHeader());
用于(员工卡数据ec:data){
pw.println(getLine(ec));
}
println(getFooter());
清理();
}
}
2-您将有不同的实现,由工厂分发。制作
getFileName
具体的和最终的是确保名称约定的好方法?在您的实现类上是,在这里,您为实现此类的人提供了一个钩子,使他们能够根据自己的喜好提供文件名。i、 e.使用此命令生成另一个具有其他名称的文件。