大话设计模式Python实现-代理模式

代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 
 4 __author__ = 'Andy'
 5 
 6 """
 7 大话设计模式
 8 设计模式——代理模式
 9 代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问
10 实现:戴励 替 卓贾易 送礼物给 娇娇
11 模型:
12 #公共接口类
13 class InterFace:
14     def request(self):
15         pass
16 #真实类
17 class RealSubject(InterFace):
18     def request(self):
19         print 'RealSubject request'
20 #代理类 调用真实类的内部方法
21 class ProxySubject(InterFace)
22     def request(self):
23         self.real = RealSubject()
24         self.real.request()
25 """
26 
27 
28 # 送礼物接口
29 class GiveGift(object):
30     # 送洋娃娃
31     def GiveDolls(self):
32         pass
33 
34     # 送花
35     def GiveFlowers(self):
36         pass
37 
38     # 送巧克力
39     def GiveChocolate(self):
40         pass
41 
42 
43 # 被追求者类
44 class SchoolGirl(object):
45     def __init__(self, name):
46         self.name = name
47 
48 
49 # 追求者类
50 class Pursuit(GiveGift):
51     def __init__(self, Girl):
52         self.Girl = Girl
53 
54     def GiveDolls(self):
55         print self.Girl.name, '送你洋娃娃'
56 
57     def GiveFlowers(self):
58         print self.Girl.name, '送你花'
59 
60     def GiveChocolate(self):
61         print self.Girl.name, '送你巧克力'
62 
63 
64 # 代理类
65 class Proxy(GiveGift):
66     def __init__(self, Girl):
67         self.proxy = Pursuit(Girl)
68 
69     # 送洋娃娃
70     def GiveDolls(self):
71         self.proxy.GiveDolls()
72 
73     # 送花
74     def GiveFlowers(self):
75         self.proxy.GiveFlowers()
76 
77     # 送巧克力
78     def GiveChocolate(self):
79         self.proxy.GiveChocolate()
80 
81 
82 if __name__ == '__main__':
83     jiaojiao = SchoolGirl('jiaojiao')
84     daili = Proxy(jiaojiao)
85     daili.GiveDolls()
86     daili.GiveFlowers()
87     daili.GiveChocolate()

上面的类的设计如下图: 

代理类Proxy引用代理的实体Pursite,提供与Pursite相同的接口来代替实体

 


作者:Andy
出处:http://www.cnblogs.com/onepiece-andy/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载于:https://www.cnblogs.com/onepiece-andy/p/python_proxy_pattern.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值