Adapter Pattern

Adapter is a middleware like layer between two incompatible interfaces.

Let’s take a real life example. If two people speaking in different languages require a translator to communicate. This person can be called an adapter in this case.

In programming, a simple example of adapter is a base64 converter. Let’s say we have a consumer that only consumes base64 encoded strings, but we have a producer that only produces ascii strings. We have put this base64 encoder in between these entities.

class AsciiProducer:
    def produce(self):
        return "TEXT"
 
class Base64Adapter:
    def produce(self):
        return base64.convert(self.ascii_producer.produce())
 
class Consumer:
    def __init__(self, producer):
        self.producer = producer
 
    def consume(self):
        self.use(self.producer.produce())

References

  1. https://python-patterns.guide/gang-of-four/composition-over-inheritance/#solution-1-the-adapter-pattern
  2. https://refactoring.guru/design-patterns/adapter