## 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