title: Immutable class/object, private Constructor, factory method
body: <p>Having already read how to make a class Immutable by following steps </p>
  
  <ol>
  <li>Don't provide "setter" methods — methods that modify fields or objects referred to by fields.   </li>
  <li>Make all fields final and private.  </li>
  <li><strong>Don't allow subclasses to override methods. The simplest way to do this is to declare the class as final. A more sophisticated approach is to make the constructor private and construct instances in factory methods.</strong>   </li>
  <li>If the instance fields include references to mutable objects, don't allow those objects to be changed:<br>
  a.  Don't provide methods that modify the mutable objects.<br>
  b.  Don't share references to the mutable objects. Never store references to external, mutable objects passed to the constructor; if necessary, create copies, and store references to the copies. Similarly, create copies of your internal mutable objects when necessary to avoid returning the originals in your methods.   </li>
  </ol>
  
  <p>AM not sure I clearly understand the utility of private constructor and factory method in the context of immutability. If I make class final, basically am closing all paths of any other class extending it. How is the stated a more sophisticated approach</p>
  
  <p>I have seen private constructor,factory method in Singleton pattern which makes sense. But when we talk of object immutability, are we also restricting object construction/instantiation when we mention private constructor and static factory methods??</p>