DDD: Enum like entities

A previous question of mine unearthed some useful links that I suspect are pertinent to your question, in particular Jimmy Bogard's discussions of Enumeration Classes.


Your proposed structure seems fine. (Terminology digression: since State has an ID, it's not a Value Object, but rather an Entity.)

Enums are a code smell, so don't attempt to go that route. It's much more object-oriented to move the behavior into the State object using the State pattern.

Instead of having to write

if (person.State == State.Working)
    // do something...

all over your code, this would allow you to write

person.State.DoSomething();

That's much cleaner, and will allow you to add new States if need be.