certain-design-patterns/proxy.py

26 lines
1004 B
Python
Raw Permalink Normal View History

2025-02-07 12:10:20 +03:00
from abc import ABC, abstractmethod
class IService(ABC):
@abstractmethod
def request(self): pass
class RealService(IService):
def request(self): print("RealService: Handling request.")
class ProxyService(IService):
def __init__(self, real_subject):
self._real_subject = real_subject
def request(self):
# Дополнительные операции до вызова метода оригинала
print("Proxy: Checking access before firing a real request.")
# Вызов метода оригинала
result = self._real_subject.request()
# Дополнительные операции после вызова метода оригинала
print("Proxy: Logging the request.")
return result
# Клиентский код
if __name__ == "__main__":
real_service = RealService()
proxy = ProxyService(real_service)
proxy.request() # Клиент вызывает метод через прокси