Каждый создание объекта включает в себя некоторые расходы в динамической памяти, и мы не создаем несколько объектов для классов, которые не выполняется какое-либо государство (то есть, они являются лицами без гражданства)
Услуги, Контроллеры и DAO не переносят/не удерживают какое-либо состояние (данные), , поэтому мы реализуем Singleton для этих классов.
В качестве объектов формы/командных классов/объектов DTO/VO хранятся данные, а мы создаем по одному на каждый запрос (они НЕ одиночные).
В чем преимущество, которое мы получаем, делая их одноточечными?
Сохранение памяти, в противном случае мы могли бы попасть в «OutOfMemoryException» в зависимости от настроенного размера кучи.
Я могу придумать только одну причину: i.e. Служебные объекты нужны снова и снова и состоят из нескольких других зависимостей. Поэтому для создания этих объектов снова и снова может потребоваться дорогостоящее (временное). Это верно ?
Нет, это НЕ из-за зависимостей, потому что они НЕ содержат никакого состояния (данных), и они являются дорогостоящими с точки зрения памяти & времени, если мы создадим один объект за каждый запрос.
В корпоративных/веб-приложениях, если вы используете singleton для класса (например, service/controller/DAO/etc ..), класс должен быть потокобезопасным.
Каким будет отличительный фактор в отдельных случаях? –
@ Elliott Извините, я не получил ваш вопрос – user3198603
Хорошо. Какое преимущество вы получаете, делая их не одиночными? –