在 java 中写出好的摘要 类

writing good abstract classes in java

我有以下需求,请帮我写出好的摘要class。

  1. 根据类型需要不同类型的操作

我有一个摘要class,

abstract public class FileHelper{

    //Template method
    //This method defines a generic structure for parsing data
    public void parseDataAndGenerateFile(String fileDownloadType)
    {
        createHeader(fileDownloadType);
        generateFile();

    }


    //We have to write output in a excel file so this step will be same for all subclasses

    public void createHeader(String fileDownloadType)
    {
        System.out.println('Creating HEADER in EXCEL');
    }
    public void generateFile(String fileDownloadType)
    {
        System.out.println('Output generated,writing to XLX');
    }
}
public class ExcelDataParser extends FileHelper {
String fileDownloadType="";   
}

public class TemplateMethodMain {

    public static void main(String[] args) {
        String fileDownloadType="expired"; 
        ExcelDataParser csvDataParser=new ExcelDataParser();
        csvDataParser.parseDataAndGenerateFile(fileDownloadType);


    }

}

请大家帮帮我,指正一下,让我有一个好的方法。

如果您想使用抽象基 class,您最好在抽象基 class 中声明一个抽象方法 String getDownloadType()。这些方法必须被派生的 classes 覆盖,并且类型可以在派生的 class 中固定。
例如:

abstract public class FileHelper {

    abstract String getFileDownloadType();

    public void parseDataAndGenerateFile() {
        createHeader();
        generateFile();
    }

    public void createHeader() {
        if ("expired".equals(getFileDownloadType())) {

        } else {

        }
    }

    public void generateFile() {
        if ("expired".equals(getFileDownloadType())) {

        } else {

        }
    }
}

public class ExcelDataParser extends FileHelper {
    @Override
    String getFileDownloadType() {
        return "expired";
    }
}

public class TemplateMethodMain {
    public static void main(String[] args) {
        ExcelDataParser csvDataParser = new ExcelDataParser();
        csvDataParser.parseDataAndGenerateFile();
    }
}


但是如果你不需要每个类型的 class,你也可以在单个 class 中使类型成为一个变量并将类型传递给构造函数
例如:

public class CsvFileHelper {

    private final String fileDownloadType;

    public CsvFileHelper(String type) {
        fileDownloadType = type;
    }

    public void parseDataAndGenerateFile() {
        createHeader();
        generateFile();
    }

    public void createHeader() {
        if ("expired".equals(fileDownloadType)) {

        } else {

        }
    }

    public void generateFile() {
        if ("expired".equals(fileDownloadType)) {

        } else {

        }
    }
}

public class TemplateMethodMain {

    public static void main(String[] args) {
        CsvFileHelper csvDataParser = new CsvFileHelper("expired");
        csvDataParser.parseDataAndGenerateFile();
    }
}