GoF Design Patterns Design patterns are a way of encapsulating common software design problems in reusable code. The goal of a design pattern is to define a family of algorithms, encapsulate each one, and make them interchangeable.