1. 代理模式(Proxy)介绍

UML类图

角色介绍

  • Subject类,通过接口或抽象类声明真实角色实现的业务方法。
  • Proxy类,实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作
  • RealSubject,实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用

代理模式的适用场景 一个设计模式,只有当它有了应用场景,它才具备存在的价值。代理模式有很多可以使用的场景,主要分为如下几类:

  • 远程代理:为一个对象的地址空间提供局部代表。
  • 虚拟代理:根据需要来创建开销较大的对象。
  • 保护代理:用于对象应该具有不同访问权限的场景,控制对原始对象的访问。
  • 智能指引:取代简单的指针,它在访问对象时执行一些附加操作。

2. 示例

"""Proxy Pattern with Python Code
"""from abc import abstractmethod, ABCMetaclass Subject(metaclass=ABCMeta):@abstractmethod def Request(self):passclass RealSubject(Subject):def Request(self):print("Receive a request")class Proxy(Subject):def __init__(self):self.subject = Nonedef Request(self):self.subject = RealSubject()self.subject.Request()class Client(object):def main(self):p = Proxy()p.Request()if __name__ == '__main__':Client().main()

输出:

# ./Proxy.py
Receive a request

参考:
https://my.oschina.net/zhangjiawen/blog/480311
https://zhuanlan.zhihu.com/p/92051694

python设计模式12-代理模式相关推荐

  1. python中代理模式分为几种_Python设计模式之代理模式实例详解

    本文实例讲述了Python设计模式之代理模式.分享给大家供大家参考,具体如下: 代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问 #!/usr/bin/env py ...

  2. Python设计模式-职责链模式

    Python设计模式-职责链模式 代码基于3.5.2,代码如下; #coding:utf-8 #职责链模式class Handler():def __init__(self):self.success ...

  3. python的编程模式-Python设计模式之状态模式原理与用法详解

    本文实例讲述了Python设计模式之状态模式原理与用法.分享给大家供大家参考,具体如下: 状态模式(State Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类 ...

  4. 设计模式之代理模式(上) 静态代理与JDK动态代理

    2019独角兽企业重金招聘Python工程师标准>>> 代理模式 给某一个对象提供一个代理,并由代理对象控制对原对象的引用. 静态代理 静态代理是由我们编写好的类,在程序运行之前就已 ...

  5. 设计模式笔记——代理模式

    设计模式笔记--代理模式 代理模式介绍 代理模式通常是介于请求方和提供方的一个中介系统,请求方是发送请求的一方,提供方是根据请求提供相应资源的一方 Web中的代理服务器就是一个例子,客户端向代理服务器 ...

  6. Javascript 设计模式之代理模式【讲师辅导】-曾亮-专题视频课程

    Javascript 设计模式之代理模式[讲师辅导]-969人已学习 课程介绍         随着 javascript ES6/7 的发布,很多老版本的设计模式的实现,今天来看是错误的,将被彻底. ...

  7. 2020修改版设计模式之代理模式(实现自己的数据库连接池)

    在动手写自己的数据库连接池的时候我们先来了解什么是数据库连接池: 模拟一个数据库连接池: public class SimpleConnectionPool { private static List ...

  8. Python设计模式-装饰器模式

    Python设计模式-装饰器模式 代码基于3.5.2,代码如下; #coding:utf-8 #装饰器模式class Beverage():name = ""price = 0.0 ...

  9. Python设计模式-中介者模式

    Python设计模式-中介者模式 代码基于3.5.2,代码如下; #coding:utf-8 #中介者模式class colleague():mediator = Nonedef __init__(s ...

  10. Python设计模式-享元模式

    Python设计模式-享元模式 基于Python3.5.2,代码如下 #coding:utf-8class Coffee:name = ""price = 0def __init_ ...

最新文章

  1. 【译文转帖】用C#写COM组件 Building COM Objects in C#
  2. LCD1602液晶显示模块的单片机驱动深入详解之硬件篇
  3. RTT设备与驱动之I2C:
  4. 1.17 Java.util.logging:JDK自带记录日志类
  5. excel文件下载下来损坏 js_js处理文件流下载excel
  6. [Vue.js]跨域访问四种解决方法
  7. Java Web工程结构_项目结构
  8. python语法基础整理_Python基础
  9. keras保存模型_TF2 8.模型保存与加载
  10. iOS 深拷贝、浅拷贝、自定义对象拷贝简介
  11. 19. jQuery 遍历
  12. Java我的世界forge安装失败,我的世界forge安装失败install怎么办
  13. 电脑wps可以语音录入吗_WPS怎么样?语音速记助你1分钟输入400字
  14. 【爬虫】批量下载B站收藏夹视频 - Python
  15. 栈,队列和链表三者之间的关系与区别
  16. 苹果笔记本win7系统触摸板无法右键功能
  17. 【C 语言小游戏】手打贪吃蛇1,闭关在家37天“吃透”这份345页PDF
  18. 计算机应用基础实训室,计算机应用基础实训
  19. M1 系统打包ipa
  20. Kindling the Darkness: A Practical Low-light Image Enhancer

热门文章

  1. springmvc进不到controller_Spring、SpringMVC、MyBatis的整合
  2. 白帽子发现美军网站SQL注入漏洞,可获取敏感数据
  3. (十三)java多线程之Timer
  4. openstack搭建
  5. Mysql取分组中前N条记录
  6. 大话项目管理工具之Confluence篇
  7. SAP HANA如何在存储过程中使用自定义的table type
  8. 客户端用mstsc不能用一台设备连接终端服务器的解决办法
  9. Docker资源限制
  10. 【401天】跃迁之路——程序员高效学习方法论探索系列(实验阶段158-2018.03.13)...