[Python设计模式] 04 - 代理模式

需求变更应该尽早发现,发现的越早代码的抽象越容易,等到业务逻辑变得庞大复杂,已有代码已经到处在使用时,重构的成本就会变大,因此一开始的实现应该越简单越好,尽快完成并上线才是王道

代理模式:为其他对象提供一种代理,以控制对这个对象的访问。

基本原理

  • 代理类和实体类都继承同一个接口(或抽象基类),具有相同的功能接口。
  • 代理类内部维护一个实体类对象,真正的功能实现是调用改对象的接口。

代码结构

class Subject(object):
    def Request(self):
        raise NotImplementedError()

class RealSubject(Subject):
    def Request(self):
        print "真实请求"

class Proxy(Subject):
    def __init__(self):
        self.realSubject = RealSubject()

    def Request(self):
        self.realSubject.Request()

def client():
    proxy = Proxy()
    proxy.Request()

代理模式是一种比较常见的模式,比较典型的应用场景:

  • RPC调用:RPC API负责代理具体的网络API调用。
  • 虚拟代理:根据需要创建开销大的对象,提高性能。
  • 安全代理:用来控制真实对象访问是的饿权限。
  • 智能指针:当调用真实对象时,代理负责处理一些额外的工作。

原文地址:http://www.isware.cn/python-design-pattern/05-proxy/

    原文作者:蓝色信仰
    原文地址: https://www.jianshu.com/p/b80e7395fd5f
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞