Software Design Patterns are reusable solutions to commonly occurring design problems within a context. Knowledge of Design Patterns allows to build robust, and maintainable software.

Some patterns are language specific, but many are language and technology agnostic. Patterns can be applied on different levels – implementation, component, and architecture.

Problem, Solution, Context

It’s important to understand that Design Patterns are skeletons of solutions to some problems and always should be evaluated in a given context if they fit or not. Sometimes many patterns can solve the same problem, but context evaluation tells which one will do it best.
Beware that using Design Patterns blindly may lead to complex, over-engineered software. This happens sometimes when developers learn new patterns and don’t fully understand their intent and applicable context (for example the Singleton is often misunderstood and misapplied).

Clean code patterns


Gang of Four Design Patterns

Factory Pattern

Share with the World!