Python学习之代理模式

little bottle
Libérer: 2019-04-28 11:22:28
avant
2573 Les gens l'ont consulté

本篇文章主要介绍Python实现代理模式,用了一个有趣的例子写了一个示范代码,具有一定参考价值,感兴趣的朋友可以了解一下,希望对您有帮助。

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

代理模式的应用场景:

1.远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。

2.虚拟代理,是根据需要创建开销大的对象。通过它来存放实例化需要很长时间的真是对象,例如html中,图片需要load很久,所以通过虚拟代理来代替真实的图片

3.安全代理,用来控制真实对象访问时的权限

4.智能指引,是指当调用真实的对象时,代理处理另外一些事

举个栗子:男A喜欢女A,但是不敢向其表白,所以委托男B为代理,代他送礼物给女A,实现这个需求的重点是,男A和女A是不互相直接接触的,都是通过代理男B,实现间接接触。

#encoding=utf-8 __author__ = 'kevinlu1010@qq.com' from abc import ABCMeta, abstractmethod class FemaleA(): def __init__(self, name): self.name = name class Male(): __metaclass__ = ABCMeta @abstractmethod def send_flower(self): pass @abstractmethod def send_chocolate(self): pass @abstractmethod def send_book(self): pass class MaleA(Male): def __init__(self, name, love_female): self.name = name self.love_female = FemaleA(love_female) def send_flower(self): print '%s送花给%s' % (self.name, self.love_female.name) def send_chocolate(self): print '%s送巧克力给%s' % (self.name, self.love_female.name) def send_book(self): print '%s送书给%s' % (self.name, self.love_female.name) class Proxy(Male): def __init__(self, name, proxyed_name, love_female): self.name = name self.proxyed = MaleA(proxyed_name, love_female) def send_flower(self): self.proxyed.send_flower() def send_chocolate(self): self.proxyed.send_chocolate() def send_book(self): self.proxyed.send_book() if __name__ == '__main__': p = Proxy('男B', '男A', '女A') p.send_book() p.send_chocolate() p.send_flower()
Copier après la connexion

相关教程:Python视频教程

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:cnblogs.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!