У меня есть иерархия интерфейсов, где Дочерний
реализует Родитель
. Я хотел бы работать с неизменяемыми объектами, поэтому я хотел бы разработать классы 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
, которая не дублирует работу по построению родительский класс для каждого дочернего класса.
Спасибо за любую помощь!