代理模式(python)
2013-10-15 17:35
309 查看
转自:http://blog.csdn.net/ponder008/article/details/6825168
关于代理,此文一句话讲得不错:引入间接性
代理模式(Proxy):为某个对象提供一种代理以控制对这个对象的访问。
注意:代理模式和策略模式的类图很相近,实现方法也是一样的,但是应用场景很不一样,体现了不同的思想。
策略模式中同一外部对象访问上下文对象的操作一样,但是里面的策略对象不同。
代理模式中不同的外部对象访问代理对象的操作一样,但是里面的真实对象是一样的。
代理模式在访问对象时引入一定程度的间接性,因为这种间接性,可以附加多种用途。
应用场景:
1、远程代理。为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。
2、虚拟代理。当要创建耗时很长的对象时,可以使用虚拟代理。虚拟代理完成的工作为新建真实对象,并在新建的过程中给出提示。比如在网页加载图片的过程中,虚拟代理可以用一个图片框暂时替代真实的图片。
3、安全代理。用于控制真实对象访问是的权限。
4、智能指引。当调用真实的对象时,代理处理另外一些事情,比如计算真实对象的引用次数、是否锁定等等。
类图:
关于代理,此文一句话讲得不错:引入间接性
代理模式(Proxy):为某个对象提供一种代理以控制对这个对象的访问。
注意:代理模式和策略模式的类图很相近,实现方法也是一样的,但是应用场景很不一样,体现了不同的思想。
策略模式中同一外部对象访问上下文对象的操作一样,但是里面的策略对象不同。
代理模式中不同的外部对象访问代理对象的操作一样,但是里面的真实对象是一样的。
代理模式在访问对象时引入一定程度的间接性,因为这种间接性,可以附加多种用途。
应用场景:
1、远程代理。为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。
2、虚拟代理。当要创建耗时很长的对象时,可以使用虚拟代理。虚拟代理完成的工作为新建真实对象,并在新建的过程中给出提示。比如在网页加载图片的过程中,虚拟代理可以用一个图片框暂时替代真实的图片。
3、安全代理。用于控制真实对象访问是的权限。
4、智能指引。当调用真实的对象时,代理处理另外一些事情,比如计算真实对象的引用次数、是否锁定等等。
#encoding=utf-8 # #by panda #代理模式 def printInfo(info): print unicode(info, 'utf-8').encode('gbk') class SchoolGirl(): Name = '' def __init__(self, name): self.Name = name class GiveGift(): """接口类:定义通用操作""" def GiveDolls(self): return def GiveFlowers(self): return def GiveChocolate(self): return class Pursuit(GiveGift): mm = None def __init__(self, mm): self.mm = mm; return; def GiveDolls(self): printInfo("代理模式:") printInfo("送 %s 洋娃娃" % self.mm.Name) return def GiveFlowers(self): printInfo("代理模式:") printInfo("送 %s 鲜花" % self.mm.Name) return def GiveChocolate(self): printInfo("代理模式:") printInfo("送 %s 巧克力" % self.mm.Name) return class Proxy(GiveGift): gg = None def __init__(self, mm): self.gg = Pursuit(mm); return; def GiveDolls(self): self.gg.GiveDolls() return def GiveFlowers(self): self.gg.GiveFlowers() return def GiveChocolate(self): self.gg.GiveChocolate() return def clientUI(): mm = SchoolGirl(r"韩梅梅") proxy = Proxy(mm) proxy.GiveDolls() proxy.GiveFlowers() proxy.GiveChocolate() return if __name__ == '__main__': clientUI();
类图:
相关文章推荐
- Python设计模式-代理模式
- 代理模式(python)
- Python设计模式(十二)【代理模式】
- 代理模式(python)
- 大话设计模式之Python实现【代理模式】
- 【程序设计】Python的代理模式
- Python设计模式之代理模式实例
- [Python设计模式]代理模式(Proxy)
- [Design Pattern]Python设计模式——代理模式
- python 单例模式获取IP代理
- python设计模式-代理模式
- python,使用代理模式访问淘宝,百度,京东,阿里
- python设计模式(代理模式)
- Python设计模式(5)-代理模式
- python设计模式之代理模式
- 举例讲解Python设计模式编程的代理模式与抽象工厂模式
- Python的结构型设计模式之代理模式
- Python设计模式之代理模式实例
- 举例讲解Python设计模式编程的代理模式与抽象工厂模式
- 设计模式之python版(四)代理模式