The adapter pattern helps establishing a communication between two different interfaces. Basically the adapter takes an existing implementation of a class and wraps it while exposing a compatible interface it can then use to communicate with the client. Let's imagine we have an existing application which is for example a