zoukankan      html  css  js  c++  java
  • 代理模式

    什么是代理模式?

    由于某些原因,一个对象(A)无法直接访问目标对象(B),而代理对象(P)可以直接访问目标对象(B),这时对象(A)可以和代理对象(P)建立关联, 通过代理对象(P)去访问目标对象(B)

    UML类图

    静态代理

    import abc
    '''
    有个二B 害羞 不敢去吃东西,叫别人去帮他拿个来吃。
    '''
    
    
    class ITest(abc.ABC):
        def test(self): ...
    
    
    class OErb(ITest):
    
        def test(self):
            print("~~~吃吃吃吃吃吃吃吃吃~~~")
    
    
    class OErbProxy(ITest):
    
        def __init__(self, o: ITest):
            self.o = o
    
        def test(self):
            print("路费5元,你快吃吧 二B")
            self.o.test()
    
    
    xm = OErb()
    
    erproxy = OErbProxy(xm)
    
    erproxy.test()

    动态代理

    不知道是对是错,随便看看得了

    import abc
    '''
    动态代理
    '''
    
    class AbsTest:
        @abc.abstractmethod
        def test(self): ...
    
    
    class OTest(AbsTest):
        def test(self):
            print("dasd")
    
        def bbb(self):
            print("bbb")
    
    
    class ProxyFactory:
        def __init__(self, o: AbsTest):
            self.o = o
    
        # 拦截器
        def __getattribute__(self, item):
            o = object.__getattribute__(self, 'o')
            attr = object.__getattribute__(o, item)
    
            def func(*args, **kw):
                print("额外操作")
                return attr(*args, **kw)
            return func
    
    
    o = OTest()
    proxy = ProxyFactory(o)
    
    proxy.test()
  • 相关阅读:
    Nginx下配置SSL安全协议
    Java嵌套类
    python命名空间与作用域
    Effective Java 4:类和接口
    VIM快捷键(转载)
    Eclipse快捷键
    Effective Java 3:对于所有对象都通用的方法
    Effective Java 1:创建和销毁对象-续
    Effective Java 1:创建和销毁对象
    python文件操作(转载)
  • 原文地址:https://www.cnblogs.com/whnba/p/11962805.html
Copyright © 2011-2022 走看看