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