美文网首页python模式设计思想
python设计模式(十一):代理模式模式

python设计模式(十一):代理模式模式

作者: Python之战 | 来源:发表于2019-02-12 21:33 被阅读15次

代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

组成:

抽象角色:通过接口或抽象类声明真实角色实现的业务方法。

代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。

真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。

实例code:

# -*- coding:utf-8 -*-


class Jurisdiction:
 """权限类"""

 def level1(self):
        print('权限等级1')

 def level2(self):
        print('权限等级2')

 def level3(self):
        print('权限等级3')

 def level4(self):
        print('权限等级4')


class Proxy:

 def __init__(self, name):
        self.user = name
        self._jurisdiction = Jurisdiction()

 def leve(self):

 if self.user == 'a':
 return self._jurisdiction.level1()
 elif self.user == 'b':
 return self._jurisdiction.level2()
 elif self.user == 'c':
 return self._jurisdiction.level3()
 elif self.user == 'd':
 return self._jurisdiction.level4()
 else:
            print('无此权限')


if __name__ == '__main__':
    test = Proxy('a')
    test.leve()
    test.user = 'b'
    test.leve()
    test.user = 'c'
    test.leve()
    test.user = 'd'
    test.leve()
    test.user = 'e'
    test.leve()

-----------------------
权限等级1
权限等级2
权限等级3
权限等级4
无此权限

应用场景:

  • 远程(Remote)代理:为一个位于不同的地址空间的对象提供一个局域代表对象。这个不同的地址空间可以是在本机器中,也可是在另一台机器中。远程代理又叫做大使(Ambassador)。好处是系统可以将网络的细节隐藏起来,使得客户端不必考虑网络的存在。

  • 虚拟(Virtual)代理(图片延迟加载的例子):根据需要创建一个资源消耗较大的对象,使得此对象只在需要时才会被真正创建。使用虚拟代理模式的好处就是代理对象可以在必要的时候才将被代理的对象加载;代理可以对加载的过程加以必要的优化。当一个模块的加载十分耗费资源的情况下,虚拟代理的好处就非常明显。

  • 保护代理(Protection Proxy )控制对原始对象的访问。保护代理用于对象应该有不同 的访问权限的时候

  • 智能引用(Smart Reference)代理:当一个对象被引用时,提供一些额外的操作,比如将对此对象调用的次数记录下来等

image

相关文章

  • python设计模式(十一):代理模式模式

    代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对...

  • 设计模式(十一):代理模式

    01.模式动机 在某些情况下,一个客户不想或者不能直接引用一个对 象,此时可以通过一个称之为“代理”的第三者来实现...

  • 设计模式(十一):代理模式

    代理模式(Proxy)为其他对象提供一种代理以控制对这个对象的访问。 在某些情况下,一个客户不想或者不能直接引用另...

  • 理解java的代理模式和动态代理

    代理模式 代理模式是23种设计模式之一,属于结构型模式。代理模式是最常见也是最常用的模式之一,只不过有很多设计模式...

  • Python 设计模式——代理模式

    代理通常是指一个介于寻求方和提供方之间的中介系统。寻求发是发出请求的一方,而提供方则是根据请求提供资源的一方。在设...

  • Python设计模式 - 代理模式

    """ 代理模式(Proxy):为某个对象提供一种代理以控制对这个对象的访问。 注意:代理模式和策略模式的类图很相...

  • spring框架中的设计模式二

    在这篇文章中,介绍4种设计模式。结构型设计模式:代理和复合模式。行为型设计模式:策略和模板方法模式。 代理模式 面...

  • 前端设计模式

    JS设计模式一:工厂模式jS设计模式二:单例模式JS设计模式三:模块模式JS设计模式四:代理模式JS设计模式五:职...

  • Mybatis代理设计模式(Proxy)与编程实现原理

    最易懂设计模式解析适配器设计模式模板方法设计模式Mybatis多级代理 1. 认识代理模式 1.1 模式定义 给某...

  • 设计模式

    常用的设计模式有,单例设计模式、观察者设计模式、工厂设计模式、装饰设计模式、代理设计模式,模板设计模式等等。 单例...

网友评论

    本文标题:python设计模式(十一):代理模式模式

    本文链接:https://www.haomeiwen.com/subject/qlrleqtx.html