Python版
https://github.com/faif/python-patterns/blob/master/structural/proxy.py
#!/usr/bin/env python # -*- coding: utf-8 -*- """ *TL;DR80 Provides an interface to resource that is expensive to duplicate. """ from __future__ import print_function import time class SalesManager: def talk(self): print("Sales Manager ready to talk") class Proxy: def __init__(self): self.busy = 'No' self.sales = None def talk(self): print("Proxy checking for Sales Manager availability") if self.busy == 'No': self.sales = SalesManager() time.sleep(0.1) self.sales.talk() else: time.sleep(0.1) print("Sales Manager is busy") class NoTalkProxy(Proxy): def talk(self): print("Proxy checking for Sales Manager availability") time.sleep(0.1) print("This Sales Manager will not talk to you", "whether he/she is busy or not") if __name__ == '__main__': p = Proxy() p.talk() p.busy = 'Yes' p.talk() p = NoTalkProxy() p.talk() p.busy = 'Yes' p.talk() ### OUTPUT ### # Proxy checking for Sales Manager availability # Sales Manager ready to talk # Proxy checking for Sales Manager availability # Sales Manager is busy # Proxy checking for Sales Manager availability # This Sales Manager will not talk to you whether he/she is busy or not # Proxy checking for Sales Manager availability # This Sales Manager will not talk to you whether he/she is busy or not