5. Design Patterns in OOP