• 设计模式之代理模式


    from abc import ABCMeta, abstractmethod
    
    """
    设计要点:
        主题(Subject):定义操作、活动、任务的接口类
        真实主题(RealSubject):真正完成操作、活动、任务的具体类
        代理主题(ProxySubject):代替真实主题完成操作、活动、任务的代理类
    
        真实主题与代理主题是一类对象,只不过是将真实主题传入代理主题,由代理主题做一些操作,在调用,使得对客户隐藏真实主题,
        有点中介模式、装饰模式的意味。
    """
    
    class Subject(metaclass=ABCMeta):
        """主体类"""
        def __init__(self, name):
            self.__name = name
    
        def getName(self1):
            return self.__name
    
        @abstractmethod
        def request(self, content=""):
            pass
    
    
    class RealSubject(Subject):
        """真实主题类"""
        def request(self, content):
            print("RealSubject todo something...")
    
    
    class ProxySubject(Subject):
        """代理主题类"""
        def __init__(self, name, subject):
            super().__init__(name)
            self.__realSubject = subject
    
        def request(self, content=""):
            self.preRequest()
            if(self.__realSubject is not None):
                self.__realSubject.request(content)
            self.afterRequest()
    
        def preRequest(self):
            print("preRequest")
    
        def afterRequest(self):
            print("afterRequest")
    
    
    def testProxy():
        realObj = RealSubject("RealSubject")
        proxyObj = ProxySubject("ProxySubject", realObj)
        proxyObj.request()
    
    
    if __name__ == "__main__":
        testProxy()
  • 相关阅读:
    网站备份list
    vnc checklist
    appnode iptables 规则后面覆盖前面的
    Appnode + Discuz checklist
    解决WORD文档无法显示链接的图像问题
    应用容器Application container
    要研究的内容
    转 Flex MXML编译成AS类
    Flex文件结构
    int a
  • 原文地址:https://www.cnblogs.com/loveprogramme/p/12995814.html
Copyright © 2020-2023  润新知