Часто корисно класифікувати об'єкти як капсульовані значення або сутності, з відмінністю того, що якщо щось є значенням, код, на який посилається, ніколи не повинен бачити зміни свого стану будь-яким способом, який сам код не ініціював. Навпаки, код, який містить посилання на суб'єкт господарювання, може очікувати, що він зміниться способами, що не підпадають під контроль власника посилання.
Хоча можна використовувати значення інкапсуляції за допомогою об'єктів змінних або незмінних типів, об'єкт може вести себе як значення лише у тому випадку, якщо застосовується хоча б одне з наступних умов:
Ніяке посилання на об'єкт ніколи не буде піддаватися впливу будь-якого, що може змінити стан, закладений в ньому.
Власник принаймні однієї з посилань на об'єкт знає всі сфери використання, до яких може бути застосована будь-яка існуюча посилання.
Оскільки всі екземпляри незмінних типів автоматично задовольняють першій вимозі, використовувати їх як значення легко. Забезпечити, що будь-яка вимога буде виконана при використанні змінних типів, навпаки, набагато складніше. В той час як посилання на непорушні типи можна вільно передавати, як засіб інкапсуляції стану, інкапсульоване в ньому, для проходження стану, збереженого у змінних типах, потрібно або побудувати незмінні обертові об'єкти, або ж скопіювати стан, інкапсульований приватними об'єктами, в інші об'єкти, які є або надається або будується для одержувача даних.
Незмінні типи дуже добре працюють для передачі значень і часто принаймні дещо придатні для маніпулювання ними. Однак вони не такі хороші в роботі з організаціями. Найближче, що може бути суб'єктом у системі із суто незмінними типами, - це функція, яка, зважаючи на стан системи, повідомляє про атрибути якоїсь частини, або створить новий екземпляр стану системи, подібний до поставляється один, за винятком якоїсь конкретної його частини, яка буде відрізнятися певним чином. Крім того, якщо мета суб'єкта господарювання полягає в інтерфейсі якогось коду до чогось, що існує в реальному світі, це може бути неможливим уникнути впливу стану, що змінюється.
Наприклад, якщо хтось отримує деякі дані через TCP-з'єднання, можна створити новий об'єкт "стан світу", який включає ці дані в його буфер, не зачіпаючи жодних посилань на старий "стан світу", але на старі копії світова держава, яка не містить останню партію даних, буде несправною і не повинна використовуватися, оскільки вони більше не будуть відповідати стану реального TCP-сокета.