Я пытаюсь установить обязательное условие в коде. Код выглядит следующим образом:Модификация шаблона Builder, это хорошая практика?
public class Foo {
public Type;
public int planeId;
public int carId;
public int capacity;
public String manufacturer;
public int serialId;
.. etc
}
Теперь Type
это перечисление, с САМОЛЕТ и ЦАР как 2 значения. Условие заключается в том, что если Type
является плоской, то planeId необходимо заполнить, иначе CarId нужно заселить. Поскольку class Foo
имеет много параметров, мы выбрали шаблон строителя.
public static class Builder {
public Builder(public Type type, int id) {
if (type == PLANE) {
planeId = id;
} else {
carId = id;
}
}
Но тогда у меня была идея, чтобы расплавить статические заводы в строитель шаблон
public static class Builder {
public static Builder getPlaneBuilder(int id) {
return new Builder(PLANETYPE, id); // calls private constructor
}
public static Builder getCarBuilder(int id) {
return new Builder(CARTYPE, id); // calls private constructor
}
Я никогда не видел статические заводы, слитые в строителей, но они, кажется, делают свою работу хорошо. Любые комментарии ? Критики? лучшее решение?
Вы только что написали это как пример? Я не думаю, что какие-либо из этих заявлений в вашем втором примере будут скомпилированы. Java не имеет инициализаторов объектов. – Moira
Да, я набрал, но вроде фиксированный. – JavaDeveloper