代理模式

阿里云2000元红包!本站用户参与享受九折优惠!

什么是代理模式?

由于某些原因,一个对象(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()

 

https://www.cnblogs.com/whnba/p/11962805.html

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论