Python学习之代理模式


本文摘自php中文网,作者little bottle,侵删。

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

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

代理模式的应用场景:

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

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

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

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

#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()

相关教程:Python视频教程

以上就是Python学习之代理模式的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

Python保存数组怎么操作

在 flask 中集成 vue

Python是开源的吗

Python解析socket数据流异常bytes的问题(详细)

Python死循环如何停止

Python中的组合数据类型可以分为哪三类

推荐几本关于的Python好书

Python实现在两个字典中寻找相同点的方法(附代码)

Python绘图四叶草

Python如何判断某年是否是闰年

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...