Шаблон Java Builder и «глубокая» иерархия объектов

Каков наилучший метод использования шаблона 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, что усугубит путаницу.

Итак, есть ли идеи, как элегантно это сделать?

15
задан curioustechizen 18 July 2011 в 14:34
поделиться