代理模式

简介: 代理模式是一种结构型设计模式,通过代理对象控制对真实对象的访问,适用于权限控制、延迟加载和日志记录等场景。它在不修改原对象的基础上增强功能,提升系统安全性与性能,但可能增加复杂性和轻微性能开销。

代理模式(Proxy Pattern)是一种结构型设计模式,它为其他对象提供一种代理以控制对这个对象的访问。代理模式通常用于以下几种场景:

控制访问:通过代理控制对真实对象的访问,可以添加权限验证等逻辑。
延迟加载:在需要时才加载和初始化资源,节省系统资源。
记录日志:在调用真实对象的方法时,可以在代理中记录日志信息。

  1. 代理模式的结构
    代理模式通常包含以下几个角色:

主题接口(Subject):定义真实对象和代理对象的共用接口。
真实主题(RealSubject):实现了主题接口,代表实际的对象。
代理(Proxy):维护对真实主题的引用,并控制对其的访问。

  1. 代理模式的 UML 图
    plaintext
    +------------------+
    | Subject |
    +------------------+
    | + request() |
    +------------------+
           ^
           |
    
    +-------+-------+
    | |
    +-------------------+ +-------------------+
    | RealSubject | | Proxy |
    +-------------------+ +-------------------+
    | + request() | | + request() |
    +-------------------+ +-------------------+
  2. 代理模式的实现
    以下是一个 Python 中代理模式的简单示例:

3.1 定义主题接口
python
from abc import ABC, abstractmethod

class Subject(ABC):
@abstractmethod
def request(self):
pass
3.2 实现真实主题
python
class RealSubject(Subject):
def request(self):
print("RealSubject: Handling request.")
3.3 实现代理
python
class Proxy(Subject):
def init(self, real_subject: RealSubject):
self._real_subject = real_subject

def request(self):
    # 在代理中可以添加额外的逻辑
    print("Proxy: Logging before calling RealSubject.")
    self._real_subject.request()
    print("Proxy: Logging after calling RealSubject.")

3.4 使用代理模式
python
if name == "main":

# 创建真实主题
real_subject = RealSubject()

# 创建代理
proxy = Proxy(real_subject)

# 使用代理来处理请求
proxy.request()
  1. 代理模式的优缺点
    优点
    控制访问:代理可以控制对真实对象的访问,可以增加安全性和权限管理。
    提高性能:可以通过延迟加载等方式提高系统的性能,尤其是在处理大对象或远程对象时。
    增强功能:可以在不修改真实对象的情况下增强其功能,比如添加日志、监控等功能。
    缺点
    增加复杂性:代理模式会引入新的类和层次结构,可能使系统变得更加复杂。
    性能开销:在某些情况下,代理的引入可能会导致性能损失,因为每个请求都需要经过代理。
  2. 何时使用代理模式
    当需要控制对某个对象的访问时,例如需要添加权限控制或日志记录。
    当对象的创建或访问开销较大,且希望实现延迟加载时。
    当需要在不改变真实对象的情况下增加额外功能时。
  3. 总结
    代理模式是一种灵活的设计模式,可以通过引入代理对象来增强系统的功能和安全性。它适用于需要控制访问、延迟加载以及记录日志等场景。在实际开发中,合理运用代理模式可以帮助简化系统设计,提高模块的可重用性和扩展性。
相关文章
|
13天前
|
数据采集 人工智能 安全
|
8天前
|
编解码 人工智能 自然语言处理
⚽阿里云百炼通义万相 2.6 视频生成玩法手册
通义万相Wan 2.6是全球首个支持角色扮演的AI视频生成模型,可基于参考视频形象与音色生成多角色合拍、多镜头叙事的15秒长视频,实现声画同步、智能分镜,适用于影视创作、营销展示等场景。
644 4
|
8天前
|
机器学习/深度学习 人工智能 前端开发
构建AI智能体:七十、小树成林,聚沙成塔:随机森林与大模型的协同进化
随机森林是一种基于决策树的集成学习算法,通过构建多棵决策树并结合它们的预测结果来提高准确性和稳定性。其核心思想包括两个随机性:Bootstrap采样(每棵树使用不同的训练子集)和特征随机选择(每棵树分裂时只考虑部分特征)。这种方法能有效处理大规模高维数据,避免过拟合,并评估特征重要性。随机森林的超参数如树的数量、最大深度等可通过网格搜索优化。该算法兼具强大预测能力和工程化优势,是机器学习中的常用基础模型。
348 164
|
7天前
|
机器学习/深度学习 自然语言处理 机器人
阿里云百炼大模型赋能|打造企业级电话智能体与智能呼叫中心完整方案
畅信达基于阿里云百炼大模型推出MVB2000V5智能呼叫中心方案,融合LLM与MRCP+WebSocket技术,实现语音识别率超95%、低延迟交互。通过电话智能体与座席助手协同,自动化处理80%咨询,降本增效显著,适配金融、电商、医疗等多行业场景。
359 155

热门文章

最新文章