Architectural Patterns vs Design Patterns
Generally, the architecture and design both explains the idea but architecture focus on the abstract view of idea while design focus on the implementation view of idea.
Design patterns - It solves commonly occurring problem.
A software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design.
It is not a finished design that can be transformed directly into source or machine code. It is a description or template for how to solve a problem that can be used in many different situations.
These design patterns divided mainly into three Groups:
In software engineering, creational design patterns are design patterns that deal with object creation mechanisms, trying to create objects in a manner suitable to the situation
- Abstract Factory
- Factory Method
- Singleton pattern
In software engineering, structural design patterns are design patterns that ease the design by identifying a simple way to realize relationships among entities.
- Proxy pattern
In software engineering, behavioral design patterns are design patterns that identify common communication patterns between objects and realize these patterns. By doing so, these patterns increase flexibility in carrying out this communication
- Null Object
Architectural patterns - It serves as a blueprint for a system.
An architectural pattern is a general, reusable solution to a commonly occurring problem in software architecture within a given context. Architectural patterns are similar to software design patterns but have a broader scope.
The architectural patterns address various issues such as as:
- High availability
- Technology Stack
Following are the list of most widely used Architectural Patterns:
- MVC Pattern
- Model View Presenter (MVP)
- Layered pattern (N-tier Architecture)
- Master-Slave Pattern
- REST (Architecture Style)
- Monolithic architecture
- Microservice architecture
- Event-driven architecture (EDA)
- Service-Oriented architecture (SOA)