# 模式类型:结构性模型
# 模型方法:静态代理模式
# 作用:在不修改目标代码的情况下,可以控制目标代码的访问,可以在其前后添加自己的业务代码
# 使用场景:监控。日志,限流
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()