一个类代理另一个类的功能
使用场景
- 直接访问对象带来的问题(对象在远程机器上,创建对象的开销很大,需要对访问进行控制)
- windows的快捷方式
Demo
"""
代理模式
"""
class Image:
def display(self):
raise NotImplementedError
class RealImage(Image):
def __init__(self, file_name):
self.file_name = file_name
self.load_image_from_disk()
def load_image_from_disk(self):
print(f"loading image {self.file_name} ...")
def display(self):
print(f"display:{self.file_name}")
class ProxyImage(Image):
def __init__(self, file_name):
self.file_name = file_name
self.real_image = None
def display(self):
if self.real_image is None:
self.real_image = RealImage(self.file_name)
self.real_image.display()
if __name__ == '__main__':
image = ProxyImage('xxx.jpg')
image.display()