Design patterns are general solutions to problems that frequently occur in software development. The following are templates of standardized best practices in structuring and designing code, as well as examples of common contexts in which these design patterns would be appropriate.
Creational design patterns abstract the instantiation of objects to make a system more independent of the process of creation, composition, and representation.