Design Patterns - Proxy

本文介绍了代理模式,这是一种对象结构型模式,用于为其他对象提供一种代理以控制对该对象的访问。适用场景包括需要通用和复杂对象指针的情况。代理模式包含抽象类、被代理类和代理类三个主要部分。通过代理类,可以在调用被代理对象的方法前后增加额外处理。文中给出了具体实现例子,展示了如何创建和使用代理对象。
摘要由CSDN通过智能技术生成

Proxy(代理) — 对象结构型模式

为其他对象提供一种代理以控制对这个对象的访问。

适用场景

  1. 在需要用比较通用和复杂的对象指针代替简单的指针的时候,使用 Proxy 模式。

基本组成

代理模式一般由以下三种组成:
抽象类:抽象类的主要职责是声明代理类与被代理类的共同接口方法,该类可以是接口也可以是抽象类。
被代理类:该类定义了代理类所表示的实际对象,是负责执行系统真正的逻辑业务对象。
代理类:其内部持有实际对象的引用,因此具备完全的队实际对象的代理权。客户端调用代理对象的方法,同时也调用被代理对象的方法,但是会在代理对象前后增加一些处理代码。

UML图

在这里插入图片描述

效果

Proxy 模式在访问对象时引入了一定程度的间接性。

实现

class AbstractText(object):
    def print(self):
        pass

class TextA(AbstractText):
    def print(self):
        print("hello world")

class TextProxy(AbstractText):
    def __init__(self, text):
        self.text = text

    def print(self):
        print("before print...")
        self.text.print()
        print("after print....")

client

def f(text : AbstractText):
    text.print()


if __name__ == "__main__":
    texta = TextA()
    text = TextProxy(texta)
    f(text)

"""
output:
before print...
hello world
after print....

"""

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值