python 设计模式之代理模式

1.代理模式是什么?

为其他对象提供一种代理以控制对这个对象的访问

通俗的来讲代理模式就是我们生活中常见的中介

 代理模式在日常生活中很常见,比如,你去杂货店买一个插座,而不是去生产插座的工厂去买。再比如,你去访问某个网站,你并没有访问权限,但你可以通过代理去访问这个网站,然后代理再把内容传给你。

 

 

 

2.为什么要用代理模式?

 在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用

 

3.代理模式的组成

代理模式有3个必要的元素:

真实的对象(执行业务逻辑,被代理的对象)

代理类(用户请求的一个接口,对真实目标的保护)

用户(获取任务的用户请求)

 

 

4.代理模式用在什么地方

1.远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。

2.虚拟代理,是根据需要创建开销大的对象。通过它来存放实例化需要很长时间的真是对象。用于惰性求值,将一个大计算量对象的创建延迟到真正需要的时候进行。例如html中,图片需要load很久,所以通过虚拟代理来代替真实的图片

3.安全代理,或叫保护/防护代理:控制对敏感对象的访问。用来控制真实对象访问时的权限

4.智能(引用)代理:在对象被访问时执行额外的动作。此类代理的例子包括引用计数和线程安全检查。是指当调用真实的对象时,代理处理另外一些事

 

 

 

5.例子

 

 

 

 

6.小结

代理模式主要使用了Python的多态和继承,干活的是被代理类,代理类主要是接活,你让我干活,好,我交给幕后的类去干,你满意就成,那怎么知道被代理类能不能干呢?同根就成,大家知根知底,你能做啥,我能做啥都清楚得很,同样一个(基类)接口。

 

 

 

参考

 https://www.cnblogs.com/Xjng/p/3878839.html  111

https://www.cnblogs.com/lizhitai/p/4476091.html

https://cloud.tencent.com/developer/news/394367

https://blog.csdn.net/liuskyter/article/details/80362722

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

https://blog.csdn.net/ruguowoshiyu/article/details/80967560

posted @ 2019-05-15 17:01  筱筱的春天  阅读(1560)  评论(0编辑  收藏  举报