程序启动时加载配置中所有转换格式,使用简单工厂模式,创建后获取不到方法,以下是代码
工厂类:
public class DataFormatterFactory {
public static IDataFormatter create(String formatterName, String config){
switch(formatterName){
case "com.nsbox.mqtt.conrtoller.data.factory.impl.DataFormatterA":
return new DataFormatterA();
case "com.nsbox.mqtt.conrtoller.data.factory.impl.DataFormatterB":
return new DataFormatterB();
}
return null;
}
}
抽象类:
public interface IDataFormatter {
DataPoint format(String raw_data);
}
实现A:
public class DataFormatterA implements IDataFormatter {
@Override
public DataPoint format(String raw_data) {
System.out.println("formatterA");
return new DataPoint();
}
}
实现B:
public class DataFormatterB implements IDataFormatter {
@Override
public DataPoint format(String raw_data) {
System.out.println("formatterB");
return new DataPoint();
}
}
调用类:
private List<IDataFormatter> formatters = new ArrayList<>();
private void createFormatters() {
List<BoxObj> boxList = formatterConfig.getBoxList();
for (BoxObj box:boxList){
IDataFormatter formatter = DataFormatterFactory.create(box.getClassName(), box.getConfig());
formatters.add(formatter);
}
}
这里formatters集合中为两个空的类,想要集合中存储这两个类,并且使用类中方法。