Я использую шаблон Builder для нескольких классов моего проекта (несколько аргументов, некоторые обязательные, некоторые необязательные и т. Д.).Эти классы являются неизменяемыми (нет сеттеров, глубокое копирование для геттеров коллекций).
Сейчас я пытаюсь сохранить эти объекты в базе данных, используя постоянную среду, которая создает объекты с конструктором + сеттерами по умолчанию.Мне не очень нравятся мои Строители!
Я не хочу понижать эту настройку до POJO и терять преимущества текущего дизайна (гибкость, неизменность, безопасность конструкции).
Я приветствовал бы любые отзывы об обходных путях, которые могут использоваться в этой ситуации (я мог бы обернуть каждый из этих классов, но это удвоило бы количество классов, и я бы предпочел этого избежать).
One post *На самом деле 1010 * указывает на это как особый недостаток шаблона Builder.
РЕДАКТИРОВАТЬ
Один ответ предлагает использовать закрытый конструктор / установщики, но этоработает только если поля класса не являются окончательными, что не в моем случае.
ФИНАЛЬНОЕ РЕДАКТИРОВАНИЕ
Спасибо всем.
То, что я думаю, будетмое окончательное решение выглядит так и работает нормально (для записи я использую MongoDB + Morphia):
class AClass {
private final String aField;
private final AClass() {
aField = "";
}
//Standard builder pattern after that - no setters (private or public)
}