We have an object that's reasonably big and expensive to construct (processing and database usage). This object basically provides a structure for the system to work - the objects are referenced to perform operations, but never changed.
So, this expensive object can be cached and shared between all users as it should not be changed by any user operation.
So my question is: is there a way to ensure the application only reads from this object (and it's sub-object arrays), but never changes the object or any of it's sub-objects?
Basically, I need to create a read-only version of the object (and it's arraylists of objects).
Any help is much appreciated on how best to achieve this?
Steve wants his application to only read from this object (and it's sub-object arrays), but never change the object or sub-objects. So, one of the things that the developer needs to do is ensure that a client cannot change the object's variables. Hence my recommendation that the class be immutable.
Jeff has made a good point that any mutable objects referenced by private variables need to be defensively copied in the getters. I think that a class written like this should be as close to read-only as possible.