Назад к вопросам
Junior
3
Что такое Value Object и где его используют? Практический пример.
Компании, где спрашивали
СБК ПАРУС
Ответ от нейросети
sobes.tech AI
Value Object (объект значения) — это объект, который характеризуется своими значениями, а не идентичностью. В отличие от сущностей, у Value Object нет уникального идентификатора, и два объекта считаются равными, если их поля совпадают.
Используют Value Object для моделирования понятий, где важны именно данные, например, координаты, деньги, дата и время, адрес и т.п. Это помогает сделать код более выразительным и избежать ошибок, связанных с изменением состояния.
Пример на Go: определим Value Object для представления координат точки на плоскости.
package main
import (
"fmt"
)
type Point struct {
X, Y float64
}
// Метод для сравнения двух точек
func (p Point) Equals(other Point) bool {
return p.X == other.X && p.Y == other.Y
}
func main() {
p1 := Point{X: 10, Y: 20}
p2 := Point{X: 10, Y: 20}
p3 := Point{X: 5, Y: 15}
fmt.Println(p1.Equals(p2)) // true
fmt.Println(p1.Equals(p3)) // false
}
Здесь Point — Value Object, который не имеет идентификатора, а сравнивается по значениям полей.