Dynamic proxies have existed since J2SE 1.3 and have been mainly utilized as a mechanism for method interception so that additional behavior could be interposed between a class caller and its callee. Dynamic proxies exemplify AOP (Aspect Oriented Programming) which bundled within Spring Framework API, it provides alternative for implementing common design patterns like Façade, [...]
Singleton pattern is probably one of most popular widely used patterns that I have seen. It’s implemented to create an access restriction to a specific resource like: printer, network, pooling, memory, logging. Here is a simple and correct implementation: