Sobes.tech
Назад к вопросам
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, который не имеет идентификатора, а сравнивается по значениям полей.