26 lines
1004 B
Python
26 lines
1004 B
Python
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() # Клиент вызывает метод через прокси
|