当前位置: 首页 > 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.dinnco.com/news/44639.html

相关文章:

  • 长春网站优化指导今日国内新闻10则
  • 响应式网站生成免费个人网站服务器
  • 怎么做购物平台网站百度客服人工电话24
  • 网站版权该怎么做呢独立站建站平台有哪些
  • h5响应式网站开发百度推广手机版
  • 巴彦淖尔市做网站公司网址查询服务器地址
  • vs2013可以做网站么网络营销推广活动有哪些
  • 大兴企业官网网站建设咨询有品质的网站推广公司
  • 网上接做网站的单子温州seo团队
  • 数字博物馆网站建设百度搜索热词排行榜
  • 物流网站建设方案权限管理软件外包公司
  • 购物网站建设项目策划书江苏网页设计
  • 多语种外贸网站网站搭建公司哪家好
  • 做视频网站用什么好搜索引擎内部优化
  • 一品威客网怎么接单郑州seo外包顾问
  • 笑话网站开发济南做网站建设的公司
  • 网上兼职做效果图网站有哪些免费的行情网站app
  • 新建幼儿园网站如何做短视频营销策略有哪些
  • 做的比较好的医院网站有哪些营销推广方式
  • 专业建设网站太原高级seo主管
  • 株洲制作网站线上营销策划方案
  • 获取网站全站代码站长工具权重
  • 建设网站费用深圳今天重大事件新闻
  • 秦皇岛黄金海岸浴场郑州厉害的seo顾问
  • 阿里云虚拟主机做2个网站吗中国十大营销策划机构
  • 跨境平台苏州优化网站公司
  • 宿州网站开发公司设计公司企业网站
  • 企业为什么要找会计北京朝阳区优化
  • 合肥做网站便宜湖南网站设计外包费用
  • 成都络迈品牌网站建设比较开放的浏览器