Design patterns
Design patterns are general reusable solutions to common problems in software design. They are not finished designs that can be transformed directly into code, but rather templates for how to solve a generalized problem in a way that can be used in many different situations.
Structural patterns
Architectural patterns
- Client-server architecture
- Data-oriented architecture
- Domain-driven design
- Event-driven architecture
- Hexagonal architecture
- Layered architecture (aka. multi-tiered or n-tier architecture
- Message-driven architecture
- Microservices
- Monoliths
- Nanoservices
- Reactive programming
- Request-response
- Serverless architecture
- Service-oriented architecture
- Vertical-slice architecture