Pretty much the same as in any other language. When you want to guarantee that there will only ever be one instance of an object.
It is a useful pattern for managing data synchronization (ie, if I only ever have one instance of a User, I know another instance won't mess up its state accidentally.)