Design Patterns

Design patterns are approaches for solving common problems when writing computer software, especially when using OOP.