Adapter example:
class TargetInterface:
def prepare_report(self):
pass
class SomeReporter:
def report(self):
print("Raport z SomeReporter.")
class ReporterAdapter(TargetInterface):
def __init__(self, reporter: SomeReporter):
self.reporter = reporter
def prepare_report(self):
self.reporter.report()
# Client uses abstraction TargetInterface (compliant with DIP)
def client_code(reporter: TargetInterface):
reporter.prepare_report()
some_reporter = SomeReporter()
adapter = ReporterAdapter(some_reporter)
client_code(adapter)