In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design. It is not a finished design that can be transformed directly into source or machine code. Rather, it is a description or template for how to solve a problem that can be used in many different situations. Design patterns are formalized best practices that the programmer can use to solve common problems when designing an application or system. - Wikipedia
Design patterns are formalized best practices that can be used to solve recurring design problems to design flexible and reusable software. Although some of them are controversial, using them is likely to improve the quality of your code when used appropriately.
This repository deals with some of the patterns, and shows their simple examples written in python respectively.
Categorized according to Software design pattern in Wikipedia.
- Creational
- Structural
- Behavioral
- Architectural (Work In Progress)
- Concurrency (Work In Progress)
- Other (Work In Progress)