Должен ли объект устанавливать свои собственные атрибуты в конструкторе? - PullRequest
1 голос
/ 04 мая 2011

Мне интересно в общих чертах, должен ли Object устанавливать себя на основе одного параметра в конструкторе.Например: если в конструкторе вы указываете идентификатор объекта, должен ли сам объект затем устанавливать свои собственные переменные, выбирая другие данные из базы данных?Или, если для создания этого объекта явно создан другой класс, который затем скрыл бы базу данных от объекта.

Ответы [ 4 ]

1 голос
/ 04 мая 2011

Если это достаточно сложно, вы можете посмотреть на реализацию Фабрики (http://en.wikipedia.org/wiki/Factory_method_pattern).

Я полагаю, что это, вероятно, то, что вы описали в своем посте с помощью «другого объекта», который помогает в создании.

1 голос
/ 04 мая 2011

Другой класс, вероятно, должен создать экземпляр объекта, считав значения, необходимые для его создания из базы данных.Это лучшее разделение проблем.Объект, который содержит значения, вероятно, будет просто JavaBean, то есть объектом, содержащим значения.Я, конечно, не стал бы добавлять код доступа к базе данных к отдельным объектам.

1 голос
/ 04 мая 2011

Зависит от сценария. Но, как правило, вы должны попытаться отделить доступ к базе данных от объекта. Лично я, вероятно, пошел бы с классом построителя, который имеет инъецируемый интерфейс для доступа к базе данных, и возвратил бы / построил мне объект.

Обратите внимание, что существует много сценариев, в которых можно позволить самому объекту создавать.

1 голос
/ 04 мая 2011

Вот мои рекомендации

  1. Используйте шаблон ObjectFactory для этой конструкции на основе идентификатора. Все, что начинает напоминать рецепт, лучше всего работает с шаблонами ObjectFactory.

  2. Я не предлагаю использовать зависимость от базы данных внутри конструктора объекта. Вы также можете поместить эту логику загрузки данных в ObjectFactory.

По сути, я чувствую, что реализация класса должна быть максимально простой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...