Последний паттерн из группы структурных, — Прокси. Его назначение в том, что бы добавлять дополнительный слой функциональности между клиентом и подсистемой (субъектом). В такой, казалось бы избыточной работе есть масса смысла и пользы, приведу несколько примеров когда это оправдано:
- субъект находится на другой машине и Прокси скрывает протокол доступа, при обращениях
- создает экземпляр субъекта, только когда это действительно надо, кеширует результаты.
- может контролировать права доступа при вызовах
- производит синхронные вызовы в асинхронной среде
На диаграмме прокси выглядит так:
Короткий пример Прокси:
class XMPPRequest():
def __init__(self, connect):
pass
def send(self, to, text):
return True
class XmppProxy():
def send(self, who, to, text):
xmpp = XMPPRequest(who)
return xmpp.send(to, text)
if __name__ == '__main__':
proxy = XmppProxy()
print(proxy.send("mrjazz", "team", "hi all"))