## Metadata
* URL: [https://jmgarridopaz.github.io/content/hexagonalarchitecture.html](https://jmgarridopaz.github.io/content/hexagonalarchitecture.html)
## Highlights
* Driver Ports ==> API offered by the application
* Driven Ports ==> SPI required by the application
* Ports and Adapters is an Object Structural Pattern coined by Dr. Alistair Cockburn, in an article he wrote in 2005.
* Ports & Adapters pattern says nothing about the structure of the inside of the hexagon.
* Ports are interfaces that the application offers to the outside world for allowing actors interact with the application.
* ports belong to the application.
* Adapters are outside the application.
* For each driver port, there should be at least two adapters: one for the real driver that is going to run it, and another one for testing the behaviour of the port.
* What an adapter does in the end is to convert an interface into another, so we could use the Adapter Design Pattern to implement it.
* Which adapter to use for each port is something that is configured at application startup.
* Besides these elements, there will be a Composition Root