Каков наилучший метод использования шаблона Builder в «глубоких» иерархиях объектов? Чтобы уточнить, я исследовал идею применения шаблона Builder, предложенного Джошуа Блохом, к моему коду привязки XML (я использую SimpleXML, но этот вопрос применим к любому случаю). Моя иерархия объектов состоит из четырех уровней с различной степенью сложности. , Я имею в виду, что на некоторых уровнях у меня есть только пара свойств для моих объектов, тогда как на некоторых других уровнях у меня до 10.
Итак, рассмотрим этот гипотетический пример (я опускаю простые аннотации XML для краткости)
public class Outermost {
private String title;
private int channel;
private List<Middle> middleList;
}
class Middle{
private int id;
private String name;
private boolean senior;
/* ... ... 10 such properties */
private Innermost inner;
}
class Innermost{
private String something;
private int foo;
/* ... Few more of these ..*/
}
Если бы я хотел принудительно создать объект Outermost
с помощью построителей, что было бы лучшим способом сделать это? Самый очевидный ответ - иметь внутренние статические классы Builder
для каждый из вышеперечисленных классов.
Но разве это не сделало бы вещи такими громоздкими? как сама проблема, которую пытается решить шаблон Builder? Я думаю о таких вещах, как - это будет применять подход «наизнанку» -Это означает, что объект Innermost
должен быть полностью сконструирован и создан, прежде чем его можно будет добавить в объект Средний
. Но все мы знаем, что на практике (особенно при создании XML или JSON) у нас редко бывает «своевременная» информация для этого.
Скорее всего, в конечном итоге будут иметь переменные для каждого свойства - на всех уровнях ; и создавать объекты в самом конце. ИЛИ, в конечном итоге в коде будет перемещаться многоуровневый Builder, что усугубит путаницу.
Итак, есть ли идеи, как элегантно это сделать?