Creating interface as your contract with outside world. Use multiple plugs in multiple sockets with the help of an adapter.
Imagine you are travelling to Europe. And normally you are carrying your phone and your charger. Now while travelling cross-country, you realise your phone charge is low and you immediately went on searching for a power outlet, and you got one. Alas! the outlet design does not match with your charging adapter. But lucky for you, you were carrying an portable universal power outlet to convert European port to multiple Universal Port. Boom, you solved the problem.
Mediates between the domain and data mapping layers using a collection-like interface for accessing domain objects. — Edward Hieatt and Rob Mee in Patterns of Enterprise Application Architecture by Martin Fowler
The Object-Relational Impedance Mismatch*
In industry, Relational Databases (e.g., OracleDB, MySQL, PostgreSQL) are the one most used as persistent data storage of an application. On the other hand, Object-oriented Programming is the dominant programming paradigm. So often it is the case that your application will be written in one of the languages that supports Object-oriented Programming patterns, whereas your database will be relational in nature. Now, the Object-oriented programming…
Whenever I have to think to understand what the code is doing, I ask myself if I can refactor the code to make that understanding more immediately apparent. — Martin Fowler.
Any fool can write code that a computer can understand. Good programmers write code that humans can understand. — Martin Fowler
Before going on what is Hexagonal Architecture (also known as Socket and Port Architecture), one must first learn about Domain Driven Application Development, and what problem we are trying to solve here.
The very basic idea behind this type of application development philosophy is that don’t ask how…
Software Development Engineer II @ HackerRank