在一个应用程序中,我有一项任务是创建将由第三方使用的文件。实际上文件中有三种不同类型的内容:
现在我只有一个名为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
}
到目前为止我的想法:
abstract class
来保存名称约定。并将内容写入文件。factory class
(工厂是一个很好用的模式吗?)。答案 0 :(得分:0)
或多或少你说的话:
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();
}
}
2-你会有不同的实施方式,由工厂配发。