An architectural pattern describes a reusable solution to a recurring problem in software architecture.
Behavioral pattern identify common communication patterns between objects and describe how to implement them.
Patterns for communication between software modules.
Concurrency patterns describe ways to deal with multi-threading and concurrent executing code.
Patterns to handle the configuration of modules, classes or applications.
Creational patterns describe approaches to instantiate objects. They control how new objects are created to avoid design problems or unnecessary complexity.
Patterns for event handling in applications.
Patterns to manage objects in the computer's memory.
Refactorings are techniques to restructure source code without changing its semantics.
Structural patterns describe ways to deal with relationships between entities, components or classes.
Patterns to handle the synchronization of data between threads or processes.