结构型模式-静态代理模式

发布时间 2023-06-26 16:31:22作者: 你看起来真的很好吃
# 模式类型:结构性模型
# 模型方法:静态代理模式
# 作用:在不修改目标代码的情况下,可以控制目标代码的访问,可以在其前后添加自己的业务代码
# 使用场景:监控。日志,限流

from abc import ABCMeta, abstractmethod


class ITeacher(metaclass=ABCMeta):
    """教师接口"""

    @abstractmethod
    def teach(self):
        pass


class TeacherProxy(ITeacher):
    target = None

    def __init__(self, target: ITeacher):
        self.target = target

    def teach(self):
        print("课前准备工作")
        self.target.teach()
        print("课后结尾工作")


class TeacherLi(ITeacher):

    def teach(self):
        print("李老师讲课")


if __name__ == "__main__":
    # 创建目标对象
    li_teacher = TeacherLi()

    # 创建代理对象,并将被代理对象传给代理对象
    teacher_proxy = TeacherProxy(li_teacher)

    # 通过代理对象,调用被代理对象方法
    teacher_proxy.teach()