# Value Object: Immutable Values > [!Note] > A **Value Object** represents an immutable concept defined solely by its **attribute values**, with **equality** determined by comparing all internal data rather than a unique identity. **Value Objects** are domain elements without their own identity—two instances are considered equal if all their contained attributes match exactly. Once created, a Value Object’s state never changes; any “modification” yields a brand-new instance, ensuring **immutability**. They are ideal for describing or measuring characteristics of an [[Entities]] or an [[Aggregate]]—such as addresses, date ranges, monetary amounts, coordinates, colors, or dimensions—without introducing unwanted side effects. By encapsulating these concepts in immutable objects, the model remains consistent and side-effect free, simplifying reasoning and reducing the risk of inadvertent state corruption. --- ## References - Vernon, V. (2016). _Domain-driven design distilled_. Addison-Wesley Professional. - Vernon, V. (2013). _Implementing domain-driven design_. Addison-Wesley Professional. - Khononov, V. (2021). _Learning domain-driven design: Aligning software architecture and business strategy_. O’Reilly Media. - Alammar, J., & Grootendorst, M. (2024). _Hands-on large language models: Language understanding and generation_. O’Reilly Media. - Evans, E. (2003). _Domain-driven design: Tackling complexity in the heart of software_. Addison-Wesley Professional. - Millett, S., & Tune, N. (2015). _Patterns, principles, and practices of domain-driven design._ Wrox.