Should entities implement interfaces?

I went down this road once (interfaces for value objects). It was a royal pain in the backside, I recommended against it. The common arguments for it are:

Mocking: They are value objects. Nought to mock. Plus mocking ends up being a large pain than either writing a builder (in Java) or using the named arguments stuff in C#.

Readonly views: I must admit I still prefer to make something immutable by default, only making it mutable if absolutely required.

Hidden functionality: Generally scope has covered this one for me.


The major benefit of this is that it is a way of exposing your entity as a "read-only" version (as long as your interface does not expose setters of course).