Value Objects
Основные моменты (взяты отсюда https://codete.com/blog/value-objects/)
Value Objects are immutable
final class Money {
/** @var int */
private $value;
/** @var string */
private $currency;
public function __construct(int $value, string $currency = 'USD')
{
$this->value = $value;
$this->currency = $currency;
}
public function equals(Money $money): bool
{
return $this->value === $money->value
&& $this->currency === $money->currency;
}
public function getValue(): int
{
return $this->value;
}
public function getCurrency(): string
{
return $this->currency;
}
}
2. Value Objects можно рассматривать как примитивные объекты. Если в языке программирования не поддерживается создание собственных примитивных типов, то можно создавать Value Objects.
3. Value Objects могут не только содеражть геттеры, но и другие вспомогательные функции (либо полностью новый, либо на основе текущего, например, результат добавления некоторой суммы к объекту Money), предоставление различного представления для его внутреннего состояния (например, IP-адрес VO может представлять IP-адрес в виде строки или двоичных данных)
Last updated
Was this helpful?