# Value Object

Record: `arch:value-object`
Kind: pattern
Layer: [Domain Modeling](https://banes-lab.com/records/layer/domain-modeling.md)
Severity: recommended
Scope: domain, modeling, immutability
Canonical: https://banes-lab.com/ontology#arch-value-object

## Repair

- Refactored by: Introduce Value Object
- Detected by: repeated validation of the same primitive shape
- Violated by: domain concepts carried as bare primitives
- Measured by: primitive-typed domain concept count
- Enforced by: domain model review

## requires

- [Value Equality](https://banes-lab.com/records/lex/value-equality.md)

## reinforces

- [Immutability](https://banes-lab.com/records/arch/immutability.md)
- [Encapsulation](https://banes-lab.com/records/arch/encapsulation.md)

## enables

- [Self-Validating Values](https://banes-lab.com/records/lex/self-validating-values.md)
- [Side-Effect-Free Equality](https://banes-lab.com/records/lex/side-effect-free-equality.md)

## conflicts-with

- [Primitive Obsession](https://banes-lab.com/records/arch/primitive-obsession.md)
- [Data Clumps](https://banes-lab.com/records/arch/data-clumps.md)
- [Long Parameter List](https://banes-lab.com/records/arch/long-parameter-list.md)

## tensions-with

- [Object Count](https://banes-lab.com/records/lex/object-count.md)

## tensions

- [Value Object Object Count](https://banes-lab.com/records/tension/object-count-value-object.md)

## referenced-by

- [Entity](https://banes-lab.com/records/arch/entity.md)
