Pular para conteúdo
  • Marcelo Areco reviewers: [] created: 2026-07-02 updated: 2026-07-02 tags:
  • ddd
  • value-objects
  • domain-model

Value Objects

Objetivo

Definir o padrão oficial para modelagem de Objetos de Valor (Value Objects) na CoreFlow Platform.

Value Objects representam conceitos do domínio que não possuem identidade própria, sendo definidos exclusivamente pelos seus atributos.


Conceito

Um Value Object é imutável.

Se algum atributo mudar, um novo objeto deverá ser criado.

Ele não possui ciclo de vida independente.


Características

Todo Value Object deverá:

  • ser imutável;
  • não possuir identificador próprio;
  • ser comparado por valor;
  • encapsular regras de validação;
  • ser reutilizável.

Comparação

Dois Value Objects são iguais quando todos os seus atributos possuem os mesmos valores.

Exemplo:

Money(100.00, BRL)

==

Money(100.00, BRL)

Exemplos

Money

Representa um valor monetário.

Campos:

  • Valor
  • Moeda

Address

Representa um endereço.

Campos:

  • CEP
  • Logradouro
  • Número
  • Complemento
  • Bairro
  • Cidade
  • Estado
  • País

Email

Representa um endereço de e-mail válido.

Validações:

  • formato
  • domínio
  • normalização

Phone

Representa telefone.

Campos:

  • País
  • DDD
  • Número

Document

Representa documentos fiscais.

Exemplos:

  • CPF
  • CNPJ

Validações obrigatórias.


Period

Representa intervalo de datas.

Campos:

  • Data Inicial
  • Data Final

Coordinates

Representa localização.

Campos:

  • Latitude
  • Longitude

Percentage

Representa percentual.

Regras:

  • mínimo
  • máximo

Color

Representa cor institucional.


URL

Representa endereço web válido.


FileMetadata

Representa metadados de arquivos.


Value Objects por Contexto

Core

  • Email
  • Phone
  • Address
  • Document
  • TimeZone
  • Locale

CRM

  • LeadSource
  • PipelineStage
  • ContactInfo

ERP

  • SKU
  • Barcode
  • Weight
  • Dimensions

Finance

  • Money
  • BankData
  • PixKey

RH

  • Salary
  • WorkingHours

Imutabilidade

Exemplo:

Address


Mudança de CEP


Novo Address

Nunca alterar a instância existente.


Regras

Os Value Objects deverão conter:

  • validações;
  • normalizações;
  • cálculos;
  • formatações.

Nunca apenas dados.


Persistência

São persistidos juntamente com sua Entidade ou Aggregate.

Nunca possuem Repository próprio.


Segurança

Sempre validar:

  • consistência;
  • formato;
  • limites;
  • obrigatoriedade.

Anti-patterns

É proibido:

  • IDs próprios;
  • estado mutável;
  • Repository;
  • lógica fora do objeto;
  • duplicação de validações.

Diagrama

classDiagram

User --> Email
User --> Phone
User --> Address

Company --> Address

Payable --> Money

Product --> Dimensions

Employee --> Salary

Objetivo Final

Garantir reutilização, consistência e encapsulamento das regras de domínio através de Objetos de Valor imutáveis, reduzindo duplicação e fortalecendo o modelo de domínio da CoreFlow Platform.