Python设计模式之代理模式简单示例
本篇章节讲解Python设计模式之代理模式。分享给大家供大家参考,具体如下: 代理模式在一般形式上是一个类函数接口。代理可以是这些事物的接口:网络连接,存储的对象,文件,或者其他资源(昂贵的或者不容易复制的)。 一个众所周知的代理模式的例子就是引用计数的指针对象。 代理模式是结构设计模式的例子。这个模式的目的是要创建一个真实对象或类的代理。 代理模式有3个必要的元素: 1. 真实的对象(执行业务逻辑,被代理的对象) 代理模式存在在以下的情形中: ① 为真实目标类创建一个对象的代价是昂贵的,一个简单对象被代理类创建是便宜的方法。 用一些真实世界的代理模式例子,allapplabs 和 userpages 来描述: 使用缓存代理能够马上缓存用户请求的web页面。这个方法能够避免更多重复的请求,改善性能。 消息box用进度条的方式传递程序执行状态 用文字处理程序打开一个文件,导入一个消息说,“please wait while the software opens the document” 一个简单的python实现; 让我们想想一个正规办公的场景,为了向一个公司的销售主管谈话,用户首先会向销售主管办公室的接待员打个电话,随后接待员转接电话。在这个例子中,销售主管会是用户希望交谈的目标,接待员就是一个代理,保护主体不受用户直接要求谈话中苦恼。 扩展这个例子,我门可以认为'销售主管'是一个真正的目标,创建一个常用的目标类作为管理者,接待员可以继承。 #coding=utf8 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" class Proxy(Manager): def __init__(self): self.busy = 'No' self.sales = None def work(self): print "Proxy checking for Sales Manager availability" if self.busy == 'Yes': self.sales = SalesManager() time.sleep(2) self.sales.talk() else: time.sleep(2) print "Sales Manager is busy" if __name__ == '__main__': p = Proxy() p.busy = 'Yes' p.work() 运行结果: 更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》 希望本文所述对大家Python程序设计有所帮助。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |