# 代理模式是结构设计模式的例子。这个模式的目的是要创建一个真实对象或类的代理。
# 代理模式有3个必要的元素:
# 真实的对象(执行业务逻辑,被代理的对象)
# 代理类(用户请求的一个接口,对真实目标的保护)
# 用户(获取任务的用户请求)
# 代理模式存在在以下的情形中:
# 为真实目标类创建一个对象的代价是昂贵的,一个简单对象被代理类创建是便宜的方法。
# 对象必须防止被用户直接使用。
# 当实际请求的时候,为真实目标类创建一个对象会有延迟。
# 让我们想想一个正规办公的场景,为了向一个公司的销售主管谈话,用户首先会向销售主管办公室的接待员打个电话,随后接待员转接电话。
# 在这个例子中,销售主管会是用户希望交谈的目标,接待员就是一个代理,保护主体不受用户直接要求谈话中苦恼。
# 销售主管: 真正对象
# 接待员: 代理
import time
class Manager(object):
def work(self):
pass
def talk(self):
pass
class SalesManager(Manager):
def work(self):
print("Sales Manager working...")
def talk(self):
print("Sales Manager ready to talk...")
print("Hello")
class Proxy(Manager):
def __init__(self):
self.busy = 'Yes'
self.sales = None
def work(self):
print("Proxy checking for Sales Manager availability")
count = 0
while True:
if self.busy == 'Yes':
time.sleep(1)
print("Sales Manager is busy, ", count, self.busy)
count += 1
if count == 3:
self.busy = 'No'
else:
self.sales = SalesManager()
time.sleep(1)
self.sales.talk()
break
if __name__ == '__main__':
p = Proxy()
p.work()