[Design Pattern]Python设计模式——代理模式
来源:互联网 发布:红警2 mac os10.12 编辑:程序博客网 时间:2024/06/06 00:29
书中的例子是:男A喜欢女A,但是不敢向其表白,所以委托男B为代理,代他送礼物给女A,实现这个需求的重点是,男A和女A是不互相直接接触的,都是通过代理男B,实现间接接触。
#encoding=utf-8__author__ = 'kevinlu1010@qq.com'from abc import ABCMeta, abstractmethodclass FemaleA(): def __init__(self, name): self.name = nameclass Male(): __metaclass__ = ABCMeta @abstractmethod def send_flower(self): pass @abstractmethod def send_chocolate(self): pass @abstractmethod def send_book(self): passclass 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()
代理模式的应用场景:
1.远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。
2.虚拟代理,是根据需要创建开销大的对象。通过它来存放实例化需要很长时间的真是对象,例如html中,图片需要load很久,所以通过虚拟代理来代替真实的图片
3.安全代理,用来控制真实对象访问时的权限
4.智能指引,是指当调用真实的对象时,代理处理另外一些事
总结:
其实代理模式是将 被代理类 的定义和调用分隔开。这样做的场景是 被代理类 不能直接被调用,所以交由代理类来调用它,然后再调用代理类。
实现是 定义一个抽象类作为父类, 被代理类和代理类作为子类并实现父类方法。其中,被代理类定义方法,代理类调用被代理类的方法。
阅读全文
0 0
- [Design Pattern]Python设计模式——代理模式
- 设计模式学习—代理模式(Proxy Design Pattern)
- [Design Pattern]Python设计模式——模板模式
- [Design Pattern]Python设计模式——状体模式
- [Design Pattern]Python设计模式——设计原则
- [Design Pattern]Python设计模式——工厂方法
- Proxy Design Pattern(代理设计模式)
- Proxy Design Pattern 代理设计模式
- Design Pattern:代理模式
- Design pattern--代理模式
- Design Pattern—— static proxy pattern 静态代理模式
- Design Pattern—— Dynamic Proxy Pattern 动态代理模式
- 设计模式之-代理模式(Proxy Design Pattern)
- 设计模式笔记 – Proxy 代理模式 (Design Pattern)
- Design pattern设计模式
- Design Pattern, 设计模式
- 设计模式(Design Pattern)
- 【设计模式】结构性模式—— 代理模式(Proxy Pattern)
- [Design Pattern]Python设计模式——工厂方法
- 【Leetcode】【python】Longest Common Prefix
- 重温python基础7:字符串操作
- 人听3踢人3
- [Design Pattern]Python设计模式——设计原则
- [Design Pattern]Python设计模式——代理模式
- 快讯:北京大学领导班子出现新变化,混混儿不见了
- [Design Pattern]Python设计模式——模板模式
- jBPM4
- [Design Pattern]Python设计模式——状体模式
- ActiveMQ
- Go语言实现文本文件拷贝
- 2017 Multi-University Training Contest 6 solutions BY 福州大学
- cmmi3