当前位置: 首页 > news >正文

四川建设安全监督管理局网站网站开发技术

四川建设安全监督管理局网站,网站开发技术,如何在淘宝上接单网站建设,百度云搭建网站5-Python与设计模式–代理模式 一、网络服务器配置白名单 代理模式是一种使用频率非常高的模式,在多个著名的开源软件和当前多个著名的互联网产品后 台程序中都有所应用。下面我们用一个抽象化的简单例子,来说明代理模式。首先,构造一个网…

5-Python与设计模式–代理模式

一、网络服务器配置白名单

代理模式是一种使用频率非常高的模式,在多个著名的开源软件和当前多个著名的互联网产品后 
台程序中都有所应用。下面我们用一个抽象化的简单例子,来说明代理模式。

首先,构造一个网络服务器:

#该服务器接受如下格式数据,addr代表地址,content代表接收的信息内容
info_struct=dict()
info_struct["addr"]=10000
info_struct["content"]=""
class Server:content=""def recv(self,info):passdef send(self,info):passdef show(self):pass
class infoServer(Server):def recv(self,info):self.content=inforeturn "recv OK!"def send(self,info):passdef show(self):print "SHOW:%s"%self.content
infoServer有接收和发送的功能,发送功能由于暂时用不到,保留。另外新加一个接口show, 
用来展示服务器接收的内容。接收的数据格式必须如info_struct所示,服务器仅接受info_struct的 
content字段。那么,如何给这个服务器设置一个白名单,使得只有白名单里的地址可以 访问服务器 呢?
修改Server结构是个方法,但这显然不符合软件设计原则中的单一职责原则。 
在此基础之上,使用代理,是个不错的方法。

代理配置如下:

class serverProxy:pass
class infoServerProxy(serverProxy):server=""def __init__(self,server):self.server=serverdef recv(self,info):return self.server.recv(info)def show(self):self.server.show()class whiteInfoServerProxy(infoServerProxy):white_list=[]def recv(self,info):try:assert type(info)==dictexcept:return "info structure is not correct"addr=info.get("addr",0)if not addr in self.white_list:return "Your address is not in the white list."else:content=info.get("content","")return self.server.recv(content)def addWhite(self,addr):self.white_list.append(addr)def rmvWhite(self,addr):self.white_list.remove(addr)def clearWhite(self):self.white_list=[]

代理中有一个server字段,控制代理的服务器对象,infoServerProxy充当Server的直接接口代理, 而whiteInfoServerProxy直接继承了infoServerProxy对象,同时加入了white_list和对白名单的操作。 这样,在场景中通过对白名单代理的访问,就可以实现服务器的白名单访问了。

if  __name__=="__main__":info_struct = dict()info_struct["addr"] = 10010info_struct["content"] = "Hello World!"info_server = infoServer()info_server_proxy = whiteInfoServerProxy(info_server)print info_server_proxy.recv(info_struct)info_server_proxy.show()info_server_proxy.addWhite(10010)print info_server_proxy.recv(info_struct)info_server_proxy.show()

打印如下:

Your address is not in the white list. SHOW: recv OK! SHOW:Hello
World!

二、代理模式

代理模式定义如下:为某对象提供一个代理,以控制对此对象的访问和控制。代理模式在使用过程中,
应尽量对抽象主题类进行代理,而尽量不要对加过修饰和方法的子类代理。如上例中,
如果有一个xServer继承了Server,并新加了方法xMethod,xServer的代理应以Server为主题进行设计,
而尽量不要以xServer为主题,以xServer为主题的代理可以从ServerProxy继承并添加对应的方法。
JAVA中,讲到代理模式,不得不会提到动态代理。动态代理是实现AOP(面向切面编程)的重要实现手段。
而在Python中,很少会提到动态代理,而AOP则会以另一种模式实现:装饰模式。有关AOP的相关内容,
我们会在装饰模式这一节中进行说明。

三、代理模式的优点和应用场景

3.1 优点:

1、职责清晰:非常符合单一职责原则,主题对象实现真实业务逻辑,而非本职责的事务,交由代理完成;
2、扩展性强:面对主题对象可能会有的改变,代理模式在不改变对外接口的情况下,可以实现最大程度的扩展; 
3、保证主题对象的处理逻辑:代理可以通过检查参数的方式,保证主题对象的处理逻辑输入在理想范围内。

3.2 应用场景:

1、针对某特定对象进行功能和增强性扩展。如IP防火墙、远程访问代理等技术的应用;
2、对主题对象进行保护。如大流量代理,安全代理等;
3、减轻主题对象负载。如权限代理等。

四、代理模式的缺点

1、可能会降低整体业务的处理效率和速度。
http://www.ritt.cn/news/1302.html

相关文章:

  • 关系建设的网站如何查看一个网站的访问量
  • 虚拟主机网站建设过程谷歌 chrome 浏览器
  • 深圳企业网站建设怎么做寻找郑州网站优化公司
  • 南昌做网站公司哪家好网址域名大全2345网址
  • 7年级微机课做网站的软件线上推广员是做什么的
  • 深圳网站建设公司联系方式推广网站大全
  • 标书制作员这工作好吗安卓优化大师旧版本
  • 做公考题的网站网络推广搜索引擎
  • 网站做apk制作工具百度导航和百度地图
  • 湖南网站建设 系统市场调研分析报告
  • 深圳网站建设费用多少营销推广技巧
  • 嘉兴海盐县城乡建设局网站哈尔滨网站制作软件
  • 空压机网站开发公司seo关键词优化如何
  • 上海建网站开发公百度做广告费用
  • 采光板及采光瓦营销型网站建设百度教育app
  • 专业做淘宝网站公司太原网站开发
  • 网站与建设实训报告做营销型网站哪家好
  • 聊城做网站的公司流程站长工具日本
  • 吴江建网站百度官网下载安装
  • 网站开发框架书籍怎么做网页
  • html网站登陆注册怎么做国际新闻最新消息十条摘抄
  • 老司机网站做暖暖哪个平台可以免费推广
  • 平面设计主要学什么软件seo研究中心怎么了
  • 无代码做网站广州seo推广营销
  • 合肥做网站公司哪家好快速收录网
  • 网站的产品图片怎样做清晰合肥网站seo推广
  • wordpress模板开发教程seo软文代写
  • wordpress phpcms比较兰州模板网站seo价格
  • 网站顶端图片素材windows优化大师是自带的吗
  • 婚礼网站怎么做百度人工客服