#java #oop #builder
Вопрос:
Я пытаюсь понять код других людей, и я увидел нечто довольно странное в реализации, касающейся создания конструктора. Хорош ли этот дизайн?
public interface Car {
static Builder createBuilder() {
return new CarImpl.Builder();
}
interface Builder {
/// Setters contract
}
}
Ответ №1:
Как правило, нет, ваш интерфейс должен определять поведение класса (сигнатуру функций), например, в «Автомобиле», отображающем такие функции, как привод, остановка, заправка и т. Д.
Ваш интерфейс не должен быть осведомлен о деталях реализации. В этом и заключается идея интерфейса — он абстрагирует детали реализации, чтобы они были помещены в тот слой, который отвечает за реализацию, что оставляет ваш интерфейс чистым, раскрывая только то, что, а не как.