Software design patterns
Software design patterns are not hard-and-fast programming rules, but are general, reusable solutions to commonly occurring problems in software design. Over the years, people have identified such patterns and given them names. The details often vary depending on the context and who you are talking to. Having design patterns helps avoid re-inventing the wheel in each project and choosing solutions to problems that have been visited before. It also provides a vocabulary for us to talk about how to implement our projects.
Note
To learn more about software design patterns, we recommend these books:Head First Design Patterns: A Brain Friendly Guide, Freeman et al.--a popular, practical, less formal approach to learning design patterns (2004)Patterns of Enterprise Application Architecture, Martin Fowler--the classic book from an object-oriented design pioneer (2002)Design Patterns: Elements of Reusable Object-Oriented Software, Gamma et al.--the original book on design...