- Real world example -> LogManager, Database connections,Config files and java.lang.Runtime#getRuntime()
- Real world example -> StringBuilder, javax.json.JsonBuilder,Custom SqlQueryBuilder
- Usage - Scenario where creation of new objects is costly.
- Real world example ->java.util.Calendar#getInstance()
- Real world example -> javax.xml.parsers.DocumentBuilderFactory#newInstance()
- Real world example -> Making Arrays compatible with Lists, Streams API compatible with other Java streams