Confusingly, Fowler uses VO to mean something else, then slags off the J2EE community for getting them mixed up...
http://www.martinfowler.com/bliki/ValueObject.html Gk. Gregor Kiddie Senior Developer INPS Tel: 01382 564343 Registered address: The Bread Factory, 1a Broughton Street, London SW8 3QJ Registered Number: 1788577 Registered in the UK Visit our Internet Web site at www.inps.co.uk <blocked::http://www.inps.co.uk/> The information in this internet email is confidential and is intended solely for the addressee. Access, copying or re-use of information in it by anyone else is not authorised. Any views or opinions presented are solely those of the author and do not necessarily represent those of INPS or any of its affiliates. If you are not the intended recipient please contact [email protected] ________________________________ A Value Object (VO) or Data Transfer Object (DTO) - (two terms for the same thing, I usually call them VOs because you don't always "transfer" them per se) are simple classes that only contain properties that can be get and/or set. They do not contain methods, constructors, or any other form of logic. They are "dumb" in a sense, only serving as information repositories. There is good logic in this I think. I use them all the time. And I don't think they are only for "moving" data around in, they are useful in single session storing of information. So often a model contains references to (say in as a property which could be the VO directly or several in an Array or ArrayCollection) and also may change data within VOs, as well as broadcast when something changes.

