大话涉及模式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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

时间: 2024-09-30 19:04:08

大话涉及模式Python实现-代理模式的相关文章

Java经典23种设计模式之结构型模式(三)------附代理模式、适配器模式、外观模式区别

本文介绍7种结构型模式里的剩下两种:享元模式.代理模式. 一.享元模式FlyWeight 享元模式比较简单且重要,在很多场合都被用到,只不过封装起来了用户看不到.其概念:运用共享内存技术最大限度的支持大量细粒度的对象.这个概念给的有些抽象,说白了就是如果内存中存在某个对象A,如果再次需要使用对象A的时候如果内存中有A这个对象就直接使用它,不要再次new了.如果没有,则重新new一个.基于这个特点,享元模式使用时一般会给待访问对象传递一个Tag,用来标识这个对象,而且要同时使用抽象工厂的方法进行访

GOF23代理模式之静态代理模式理解之经典

 设计模式之代理模式之静态代理模式      代理模式(Proxy pattern)          核心作用:               通过代理,控制对对象的访问.                    可以通过详细控制访问某个(某类)对象的方法,在调用这个方法前做前置处理,调用这个方法后做后置处理.(即AOP的微观实现)               AOP(面向切面编程.Aspect Oriented Programming)的核心实现的机制          举个例子来理解这种模

《JAVA与模式》之代理模式

享元的定义: 享元模式英文称为“Flyweight Pattern”,如果翻译成为羽量级模式,估计会让人有点捉摸不透,而享元,则可以较好的体现该模式的用途,共享元素 享元的用途: 我们知道,在java应用中,会出现许多String a="123",String b="123"之类的String类型的变量,如果只是小应用,到还好,假设是一个庞大的系统, 有好多处都需要用定义String a="223",那开销可想而知,而JDK的开发者自然想到了这点

设计模式(就) : 结构型模式--代理模式

代理模式是比较常见的一种模式,我们平常接触的比较多,比如正向代理和反向代理. 正向代理的代理服务器是和客户端的网络在一起,由代理服务器转发请求和接受结果,比如有的公司的服务器,会过滤掉对外部网络的访问请求:反向代理的代理服务器接受来自客户端的请求,决定讲请求转发给哪个内部服务器进行处理,反向代理的服务器也可能会过滤掉一些不安全的请求,或者不符合验证条件的请求. 所以代理模式的主要目的是控制对象的访问. <java与模式>中代理模式有两种实现方式:一种是静态的实现方式,一种是利用jdk的动态的实

&amp;lt;四&amp;gt;读&amp;lt;&amp;lt;大话设计模式&amp;gt;&amp;gt;之代理模式

代理模式我想大家即便不熟悉也都听过吧,从字面意思上看就是替别人干活的,比方代理商.在项目的实际应用中也有非常多地方用到.比方spring通过代理模式生成对象等. 代理模式的书面定义:为其它对象提供一种代理以控制对这个对象的訪问. 在某些情况下,一个对象不适合或者不能直接引用还有一个对象,而代理对象能够在client和目标对象之间起到中介的作用. 在<<大话设计模式>>一书中以一个有男朋友的女孩让"小菜"帮忙修电脑的故事展开的,事实上说白了代理就是帮别人干活的,一

大话设计模式第七章---代理模式模式PHP实现

<?php abstract class Subject { abstract public function request(); } class Real_subject extends Subject { public function request() { echo "真实请求"; } } class Proxy extends Subject { private $_real_subject = null; public function request() { if

大话设计模式读书笔记6——代理模式

代理模式: 代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问. UML结构如下图: 代码实现: //定义一个Subject 抽象类 public abstract class Subject { public abstract void Request(); } //定义一个RealSubject类,继承Subject public class RealSubject : Subject { public override void Request() { Console.W

设计模式之结构型模式—— 2.7 代理模式

<?php /**  * 2.7 代理模式  * 定义:  *      为其他对象提供一种代理以控制对这个对象的访问.  * 角色:  *      1. 代理抽象角色  *          职责:统一代理和被代理角色接口  *      2. 被代理角色  *          职责:  *      3. 代理角色  *          职责:代理角色2,并对角色2进行访问控制.  * 优点:  *      1. 职责清晰  *      2. 高扩展性  *      3. 智能化

设计思想与模式之四静态代理模式

一 概述 1.什么是代理模式? 为了隐藏与保护目标对象,为其他对象提供一个代理以控制对该目标对象的访问. 2.什么是静态代理模式? 代理模式有两种: 静态代理:代理对象固定. 动态代理:代理对象不固定. 二 静态代理模式 1.基本结构: 父类:可以是一个接口.抽象类.一般类,一般是接口,保证可以按照操作目标对象的方式操作代理对象. 目标类:实现了父类. 代理类:不仅拥有与目标相同的父类,而且包含目标类对象. 2.代理类包含目标对象的实现 代理模式的作用是隐藏与保护目标对象,因此目标对象不能由用户