![](https://bestproxy.cc/wp-content/uploads/2022/12/1671619557-1642519138-slider-jms.png)
吴老的《selenium webdriver 实战宝典》出版了!
相关阅读:Python设计模式——装饰模式(Decorator)
书中的例子是:男A喜欢女A,但是不敢向其表白,所以委托男B为代理,代他送礼物给女A,实现这个需求的重点是,男A和女A是不互相直接接触的,都是通过代理男B,实现间接接触。
#encoding=utf-8__author__ = [email protected] 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.智能指引,是指当调用真实的对象时,代理处理另外一些事
(作者:Xjng 来源:)
公益传播测试知识、技能与正能量!感谢作者!分享测试生活,思考测试人生!欢迎投稿!文章图片来自网络,如有侵权请见谅,请联系我们妥善处理。@.com
光荣之路软件测试培训官网:www.gloryroad.cn:gloryroadtrain性能测试群:测试招聘群: Java2群:Python群:咨询V信:mengqiao626咨询: