Объект без состояния (без полей) - использовать повторно или создавать новые - PullRequest
0 голосов
/ 06 апреля 2011

в моем веб-приложении Seam есть сервис, возвращающий генераторы для генерации документов. Эти объекты без состояния (без полей), только методы. Что-то не так, если внутри службы есть только один экземпляр каждого генератора, и каждый запрос будет возвращать один и тот же экземпляр? Или я должен всегда создавать и возвращать новый экземпляр?

Ответы [ 3 ]

1 голос
/ 06 апреля 2011

Не знаю о Seam, но это что-то вроде EJB внизу, не так ли?В мире EJB для этого случая были ejbs без состояния: (пере) использование объектов без состояния.

Так что, если это возможно с Seam и если эти объекты не имеют состояния, сделайте их как bean-компоненты без состояния.Затем их можно безопасно использовать повторно.

Re: статические методы - это может работать, но в зависимости от используемой конструкции иногда у вас не может быть статических методов, но требуются экземпляры объектов, например, когда вам нужна определенная гибкость создания с использованием фабрик.

1 голос
/ 06 апреля 2011

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

Такое поведение будет похоже на бин синглтона весной

0 голосов
/ 06 апреля 2011

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

РЕДАКТИРОВАТЬ: Если этот класс является средством передачи функциональности в метод, то я согласен, что использование статических методов не будетРабота.В таком случае, при прочих равных условиях, я бы рекомендовал создать новый объект исключительно для указания читателям, что между использованиями ничего не сохраняется.Однако это слабое предпочтение, и если есть какая-либо другая причина для повторного использования объектов, сделайте это.

...