使用哪种模式?

时间:2015-03-08 16:11:21

标签: java pdf design-patterns plugins code-reuse

问题:

我必须填写PDF表格。必须使用不同的值格式填充相同的字段。例如,可以有一个日期字段,如@ today_date @或@ today_date_in_words @。 Similary @ number @或@number_in_words @。

然后经常出现针对相同字段的更多格式的请求。

我的问题是,我可以使用某种模式来处理这个问题,这样我就不需要对代码进行很多更改,而是只需插入新格式就可以得到所需的结果。

1 个答案:

答案 0 :(得分:1)

令人惊讶的是,大多数设计问题都可以通过简单的抽象来解决。

首先创建一个名为Formatter的接口:

public interface Formatter<I,O> {
    public O format(I input);
}

然后创建格式化程序的具体实现,以将数字转换为单词:

    public class NumberInWordsFormatter implements Formatter<Number,String> {

    @Override
    public String format(Number input) {
        String numberInWords = input.toString();
        //logic for converting a number to words
        return numberInWords;
    }

}

这是你如何使用上述类:

public class FormattingExamples {
    public static void main(String []args) {
        Formatter<Number,String> formatter = new NumberInWordsFormatter();
        String numberInWords = formatter.format(100);
        System.out.println(numberInWords);
    }
}

您可以创建一系列格式化程序,并使用它们以不同格式格式化字段。请注意,在当前示例中,我只是将数字转换为String并返回它。您可以实现逻辑来读取数字并将其转换为格式方法中的单词。另请注意,保存字段名称和值的类应传递给Formatter。如果您有任何问题,请告诉我。