模式 / 结构模式
image

# Subject
class Graphic:
    def __init__(self, file_name):
        self.fileName = file_name

    def draw(self):
        print("base draw")

    def get_file_name(self):
        return self.fileName


# RealSubject
class Image(Graphic):
    # Request()
    def draw(self):
        super().draw()
        print("draw " + self.fileName)


# Proxy
class ImageProxy(Graphic):
    def __init__(self, file_name):
        super().__init__(file_name)
        self.image = object

    def draw(self):
        self.get_image().draw()

    def get_image(self):
        if not isinstance(self.imageGraphic):
            self.image = Image(self.fileName)
        return self.image


# Client
proxy = ImageProxy("1.png")
# operation without creating a RealSubject
fileName = proxy.get_file_name()
# forwarded to the RealSubject
proxy.draw()

print(fileName)