On occasion, you will see objects that are nothing more than containers for data. I like to call such objects Messengers . A messenger allows you to package and send bundles of data. Often the data is passed to the messenger's constructor, and the messenger is sent along its way. Recipients of the messenger access the data via get methods.
Messengers are usually short-lived objects.
In general, you should move code to data as described in Guideline 1 . Most of your object designs should be service-oriented objects, as described in Guideline 2 . But on occasion, you may find yourself with some data that you don't know what to do with. Sometimes you know some information, but you don't know what behavior that information implies. You can't move the code to the data, because even though you have the data, you don't know what the code should do.