Шаблон Builder и постоянство

Я использую шаблон Builder для нескольких классов моего проекта (несколько аргументов, некоторые обязательные, некоторые необязательные и т. Д.). Эти классы неизменяемы (нет сеттеров, глубокая копия для получателей коллекций).

Сейчас я пытаюсь сохранить эти объекты в базе данных, используя среду сохранения, которая конструирует объекты с помощью конструктора по умолчанию + установщиков. Очень не любит моих Строителей!

Я не хочу превращать эту настройку в объекты POJO и терять преимущества текущего дизайна (гибкость, неизменяемость, безопасность конструкции).

Я приветствовал бы любые отзывы об обходных путях, которые можно использовать в этой ситуации (я мог бы обернуть каждый из этих классов, но это удвоило бы количество классов, и я бы предпочел этого избежать).

Одно сообщение фактически указывает на это как на особый недостаток шаблона Builder.

РЕДАКТИРОВАТЬ

Один ответ предлагает использовать частные конструкторы / сеттеры, но это работает только в том случае, если поля класса не являются окончательными, что не в моем случае.

ОКОНЧАТЕЛЬНОЕ РЕДАКТИРОВАНИЕ

Всем спасибо.
Я думаю, что мое окончательное решение выглядит следующим образом и отлично работает (для записи, я использую MongoDB + Morphia):

class AClass {
    private final String aField;
    private final AClass() {
        aField = "";
    }
    //Standard builder pattern after that - no setters (private or public)
}

8
задан Community 23 May 2017 в 11:48
поделиться