Adapter Pattern
Adapter Pattern connects existing classes or objects with another existing client. It makes classes that are not designed to work together possible to cooperate with each other.
An adapter could be either a class adapter or an object adapter. A class adapter extends the adaptee class and exposes extra APIs that would work with the client. An object adapter, on the other hand, does not extend the adaptee class. Instead, it stores the adaptee as a dependency.
The class adapter is useful when you need to access protected methods or properties of the adaptee class. However, it also has some restrictions when it comes to the JavaScript world:
The adaptee class needs to be extendable
If the client target is an abstract class other than pure interface, you can't extend the adaptee class and the client target with the same adapter class without a mixin
A single class with two sets of methods and properties could be confusing
Due to those limitations, we are going to talk more about object...