问题:
我必须填写PDF表格。必须使用不同的值格式填充相同的字段。例如,可以有一个日期字段,如@ today_date @或@ today_date_in_words @。 Similary @ number @或@number_in_words @。
然后经常出现针对相同字段的更多格式的请求。
我的问题是,我可以使用某种模式来处理这个问题,这样我就不需要对代码进行很多更改,而是只需插入新格式就可以得到所需的结果。
答案 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。如果您有任何问题,请告诉我。