代理模式 python
时间: 2024-05-14 18:11:07 浏览: 12
代理模式是一种结构型设计模式,它允许通过在对象之间添加一个代理对象来控制对原始对象的访问。代理对象可以充当原始对象的接口,向客户端提供简单的访问方式,同时隐藏了原始对象的复杂性。
在Python中,可以使用类来实现代理模式。例如,可以定义一个代理类来控制对原始类的访问,以便在必要时添加额外的逻辑或限制访问。
以下是一个简单的示例代码,其中包括一个接口类、一个实现类和一个代理类:
```
# 接口类
class Subject:
def request(self):
pass
# 实现类
class RealSubject(Subject):
def request(self):
print("RealSubject: Handling request.")
# 代理类
class Proxy(Subject):
def __init__(self, real_subject: RealSubject) -> None:
self._real_subject = real_subject
def request(self):
if self.check_access():
self._real_subject.request()
self.log_access()
def check_access(self) -> bool:
print("Proxy: Checking access prior to firing a real request.")
return True
def log_access(self) -> None:
print("Proxy: Logging the time of request.")
```
在上述代码中,`Subject`是一个接口类,定义了一个`request`方法,用于请求处理。`RealSubject`是实现类,实现了`Subject`接口,并重写了`request`方法。`Proxy`是代理类,继承自`Subject`接口,并包含一个指向`RealSubject`对象的引用。当客户端调用代理对象的`request`方法时,代理对象会检查是否有权限访问实际对象,并记录访问时间。