У меня есть дилемма, которая нуждается в том, что я долго размышлял, но до сих пор не понял, как эффективно и эффективно кодировать (проектировать) это.
У меня есть объектные данные, которые возвращаются в трех текстовых форматах: JSON, XML, ATOM. В JSON данные могут быть объектом JSON или массивом JSON. XML и ATOM - это xml.
На основе этих 3 форматов мне нужно создавать объекты (скажем, A, B, C, D, E). Я думал о наличии паттерна Builder для генерации этих объектов, поэтому мой конструктор интерфейса:
public interface Builder<T, E, A> { //Where E = Element, A is Element array, this is useful for JSON
public T create(E element);
public T[] create(A array);
}
public class ABuilder implements Builder<A, JSON, JSONArray> {
public A create(JSON json) {...}
public A[] create(JSONArray array) {...}
}
Проблема в том, что я хочу создать динамический шаблон фабричного / альтернативного дизайна, который может создавать объекты на основе формата ....
т.е. Я хочу такую функциональность, чтобы я мог сделать
public class Resource {
public A getA(String formatString) {
return new Something().createA(formatString); //or something better....
}
}
Есть ли у вас лучший способ сделать эту проблему возможной? Имейте в виду, все это основано на 3 возможных форматах. Цель состоит в том, чтобы генерировать объекты динамически на основе формата, не беспокоясь о структуре формата.