Шаблон построения для иерархии полиморфных объектов: возможно ли с Java?

У меня есть иерархия интерфейсов, где Дочерний реализует Родитель . Я хотел бы работать с неизменяемыми объектами, поэтому я хотел бы разработать классы Builder , которые удобно конструируют эти объекты. Однако у меня много интерфейсов Child , и я не хочу повторять код для построения Parent s в каждом типе дочернего построителя.

Итак, примите следующие определения:

public interface Parent {
    public Long getParentProperty();
}

public interface Child1 extends Parent {
    public Integer getChild1Property(); 
}

public interface Child2 extends Parent {
    public String getChild2PropertyA();
    public Object getChild2PropertyB();
}

Как я могу эффективно реализовать построители Child1Builder и Child2Builder ? Они должны поддерживать такие операции, как:

Child1 child1 = Child1Builder.newChild1().withChild1Property(5).withParentProperty(10L);

и

Child2 child2 = Child2Builder.newChild2().withChild2PropertyA("Hello").withParentProperty(10L).withChild2PropertyB(new Object());

Я не хочу реализовывать особый случай withParentProperty для каждого дочернего построителя.

Отредактировано, чтобы добавить второе свойство к Child2 , чтобы уточнить, что это невозможно сделать с помощью простых универсальных шаблонов. Я не ищу способ объединить Child1 и Child2 - я ищу способ реализовать систему Builder , которая не дублирует работу по построению родительский класс для каждого дочернего класса.

Спасибо за любую помощь!

22
задан seh 4 February 2012 в 04:53
поделиться