Classification of patterns

Patterns differ by their complexity, level of detail and scale of applicability to the entire system being designed. Just like in cooking, you can have a simple chowder recipe or a huge menu for a festive dinner.

The most basic and low-level patterns are idioms. They aren’t very universal, since they can only be applied in a single programming language.

The most universal are architectural patterns that can be implemented in virtually any language. They are required for designing the entire program, not its particular components.