Неизменяемый объект
| Неизменяемый объект | |
| Immutable object | |
| Описан в Design Patterns |
Нет |
|---|---|
Неизменяемый объект (англ. Immutable object) — в объектно-ориентированном программировании объект, который не может быть изменён после своего создания.
Содержание |
[править] Виды неизменяемых объектов
Объект может быть неизменяемым как полностью, так и частично. Например, применение директивы const к какому-либо члену класса в C++ делает объект частично неизменяемым. В некоторых случаях объект считается неизменяемым с точки зрения пользователя класса, даже если изменяются его внутренние поля. Как правило, неизменяемый объект получает все внутренние значения во время инициализации, либо значения устанавливаются в несколько этапов, но до того, как объект будет использован.
[править] Применение
Неизменяемые объекты часто используются для устранения дорогих операций копирования и сравнения, для упрощения кода и увеличения скорости исполнения. Однако неуместно делать объект неизменяемым, если в нём есть большое количество изменяемых данных.
Примером таких объектов могут служить строки в Java, C#, VB.NET и Python. Так, операции изменения строки приводят к созданию нового объекта строки и разрушению старого. Такой подход позволяет исключить манипулирование (перенос, изменение размера) большими массивами данных.
[править] См. также
[править] Ссылки
- Теория и практика Java: Изменять или не изменять? (рус.)
- Immutable objects (англ.)
- Descriptions from Portland Pattern Repository (англ.)
| Это заготовка статьи о программировании. Вы можете помочь проекту, исправив и дополнив её. |
|
|
|
|---|---|
| Основные |
Делегирования • Интерфейс • Неизменяемый объект • Функционального дизайна |
| Порождающие | |
| Структурные | |
| Поведенческие |
Интерпретатор • Итератор • Команда • Наблюдатель • Посетитель • Посредник • Состояние • Стратегия • Хранитель • Цепочка обязанностей • Шаблонный метод |
| Параллельного программирования |
|
