Ports and adapters pattern
Day 114 of 149
👉 Full deep-dive with code examples
The Power Outlet Analogy
Your laptop works anywhere in the world:
- Different outlets in different countries
- You just use an adapter
- The laptop doesn't change—only the adapter does
Hexagonal Architecture works like this!
Your core code stays the same, adapters connect it to the outside world.
The Problem It Solves
Typical code gets tangled:
- Business logic mixed with database code
- Core rules depend on external APIs
- Change your database? Rewrite everything!
- Testing requires the whole system running
How It Works
Picture a hexagon (or any shape):
Inside (Core):
- Your business logic
- Pure rules
- Knows nothing about databases, APIs, or UI
Outside (Adapters):
- Connect core to external things
- Database adapters
- Web adapters
- API adapters
[Web UI]
↓
┌─────────┐
│ Core │ ← Pure business logic
└─────────┘
↑ ↑
[Database] [Email API]
The Port & Adapter Concept
Ports: What the core needs (interfaces)
- "I need to save users"
- "I need to send notifications"
Adapters: How it's actually done
- PostgreSQL adapter saves to that database
- Email adapter sends via SendGrid
Want to switch databases? Just write a new adapter!
Benefits
- Testable → Test core without real databases
- Flexible → Swap external services easily
- Clean → Business logic is pure and focused
- Future-proof → Technology changes don't require rewrites
In One Sentence
Hexagonal Architecture keeps your core business logic independent by using adapters to connect to databases, APIs, and UIs.
🔗 Enjoying these? Follow for daily ELI5 explanations!
Making complex tech concepts simple, one day at a time.
Top comments (0)