
from abc import ABC, abstractmethod
# Target
class IText(ABC):
# Request()
@abstractmethod
def get_text(self):
pass;
# Adaptee
class StringList:
def __init__(self):
self.rows = []
# SpecificRequest()
def get_string(self):
return "\n".join(self.rows)
def add(self, value):
self.rows.append(value)
# Adapter
class TextAdapter(IText):
def __init__(self):
self.stringList = StringList()
# Request()
def get_text(self):
return self.stringList.get_string()
# Client
adapter = TextAdapter()
adapter.stringList.add("line 1")
adapter.stringList.add("line 2")
text = adapter.get_text()
# text: line 1
# line 2
print(text)
| Преобразует интерфейс класса в другой интерфейс, ожидаемый клиентами. Обеспечивает совместную работу классов, которая была бы невозможна без данного паттерна из-за несовместимости интерфейсов. |