Mutable objects are used when you have to set multiples values after instantiating the object. You shouldn't have a constructor with, say, six parameters. Instead you modify the object with setter methods. An example of this is a Report object, with setters for font, orientation etc. For short: mutables are useful when you have a lot of state to set to an object and it would not be practical to have a very long constructor signature. EDIT: Builder pattern can be used build the whole state of the object.