Design Patterns are descriptions or templates that can be repeatedly applied to commonly recurring problems during in software design . A familiarity of Design Patterns is very useful when planning, discussing, managing and documenting your applications from now and into the future.