文件创建的良好设计模式是什么?

7
在一个应用程序中,我有一个任务是创建将由第三方使用的文件。实际上,文件中有三种不同类型的内容:
  1. 员工卡列表,用于向第三方应用程序发送数据;
  2. 员工卡列表,用于收集生物特征;
  3. 数字区间。
目前,我只有一个名为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

}

我的想法:

  1. 创建一个抽象类来保存命名约定,以及将内容写入文件。
  2. 创建一个工厂类,它将了解所有类型的文件(这里使用工厂模式是个不错的选择)。
  3. 实现具体的类来定义将要写入哪些内容的文件类型。
1个回答

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- 你将会有不同的实现,由工厂分配。


getFileName声明为concretefinal是确保命名规范的好方法吗? - user800014
在您的实现类上,是的,您在这里为实现该类的人提供了一个钩子,以便他们可以根据自己的喜好提供文件名。也就是说,可以使用它来生成另一个具有不同名称的文件。 - MahdeTo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接