Объекты-значения являются гораздо «значениями с методами», чем «объектами».
«Адрес» как значение, принципиально не отличается от целочисленного типа примитива. Существенное различие между ними состоит в том, что большинство общих языков программирования не имеют встроенного типа адреса. Поэтому мы должны свернуть наш собственный или повторно использовать один из библиотеки.
Во многих современных языках вы можете свернуть свои собственные только с помощью идиом «объект», чтобы создать собственную структуру данных и необходимую семантику запроса.
Объекты-значения - это данные с присоединенной семантикой запроса.
С другой стороны, сущности меняются со временем. Способ реализации реализации сущности заключается в том, что под прикрытием сущность является изменяемой ссылкой на значение.
void Entity::onChange(data) {
// dereference to get the current state value
val oldState = this.state;
// use a pure function to compute a new state value
val newState = stateChange(oldState, data);
// update the reference
this.state = newState;
}
Конкретная структура данных, используемая для хранения состояния, является подробностью реализации сущности, не представляющей интереса для других элементов в решении.
Дочерняя сущность - это сущность, то есть объект, отвечающий за управление некоторой неявной структурой данных. Он предназначен для изменения.
Это "точно так же, как корень", но в меньшем масштабе - у корня есть более полное понимание всего контекста.
Смотри также