Design Patterns Explained with examples !