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

网页设计作业电影介绍网站海宁高端高端网站设计

网页设计作业电影介绍网站,海宁高端高端网站设计,上海公共招聘网站,抖音优化公司6-Python与设计模式–装饰器模式 一、快餐点餐系统 又提到了那个快餐点餐系统#xff0c;不过今天我们只以其中的一个类作为主角#xff1a;饮料类。 首先#xff0c;回忆下饮料类#xff1a; class Beverage():name price 0.0type BEVERAGE…6-Python与设计模式–装饰器模式 一、快餐点餐系统 又提到了那个快餐点餐系统不过今天我们只以其中的一个类作为主角饮料类。 首先回忆下饮料类 class Beverage():name price 0.0type BEVERAGEdef getPrice(self):return self.pricedef setPrice(self, price):self.price pricedef getName(self):return self.nameclass coke(Beverage):def __init__(self):self.name cokeself.price 4.0class milk(Beverage):def __init__(self):self.name milkself.price 5.0除了基本配置快餐店卖可乐时可以选择加冰如果加冰的话要在原价上加0.3元 卖牛奶时可以选择加糖如果加糖的话要原价上加0.5元。怎么解决这样的问题 可以选择装饰器模式来解决这一类的问题。首先定义装饰器类 class drinkDecorator():def getName(self):passdef getPrice(self):passclass iceDecorator(drinkDecorator):def __init__(self,beverage):self.beveragebeveragedef getName(self):return self.beverage.getName() icedef getPrice(self):return self.beverage.getPrice()0.3class sugarDecorator(drinkDecorator):def __init__(self,beverage):self.beveragebeveragedef getName(self):return self.beverage.getName() sugardef getPrice(self):return self.beverage.getPrice()0.5构建好装饰器后在具体的业务场景中就可以与饮料类进行关联。 以可乐冰为例示例业务场景如下 if __name____main__:coke_colacoke()print Name:%s%coke_cola.getName()print Price:%s%coke_cola.getPrice()ice_cokeiceDecorator(coke_cola)print Name:%s % ice_coke.getName()print Price:%s % ice_coke.getPrice()打印结果如下 Name:coke Price:4.0 Name:coke ice Price:4.3 二、装饰器模式 装饰器模式定义如下动态地给一个对象添加一些额外的职责。在增加功能方面 装饰器模式比生成子类更为灵活。装饰器模式和上一节说到的代理模式非常相似可以认为装饰器模式就是代理模式的一个特殊应用 两者的共同点是都具有相同的接口不同点是侧重对主题类的过程的控制而装饰模式则侧重对类功能的 加强或减弱。上一次说到JAVA中的动态代理模式是实现AOP的重要手段。而在Python中 AOP通过装饰器模式实现更为简洁和方便。先来解释一下什么是AOP。AOP即Aspect Oriented Programming中文翻译为面向切面的编程它的含义可 以解释为如果几个或更多个逻辑过程中这类逻辑过程可能位于不同的对象不同的接口当中有重复的操 作行为就可以将这些行为提取出来即形成切面进行统一管理和维护。举例子说系统中需要在各个地方 打印日志就可以将打印日志这一操作提取出来作为切面进行统一维护。从编程思想的关系来看可以认为AOP和OOP面向对象的编程是并列关系二者是可以替换的也可以结合起来用。实际上在Python语言中是天然支持装饰器的如下例 def log(func):def wrapper(*args, **kw):print call %s(): % func.__name__return func(*args, **kw)return wrapperlog def now():print 2016-12-04 if __name____main__:now()打印如下 call now(): 2016-12-04 log接口就是装饰器的定义而Python的语法部分则直接支持装饰器的使用。 如果要在快餐点餐系统中打印日志该如何进行AOP改造呢可以借助类的静态方法或者类方法来实现 class LogManager:staticmethoddef log(func):def wrapper(*args):print Visit Func %s%func.__name__return func(*args)return wrapper在需要打印日志的地方直接LogManager.log即可打印出访问的日志信息。 如在beverage类的函数前加上LogManager.log场景类保持不变则打印结果如下 Visit Func getName Name:coke Visit Func getPrice Price:4.0 Visit Func getName Name:coke ice Visit Func getPrice Price:4.3 三、装饰器模式的优点和应用场景 优点 1、装饰器模式是继承方式的一个替代方案可以轻量级的扩展被装饰对象的功能 2、Python的装饰器模式是实现AOP的一种方式便于相同操作位于不同调用位置的统一管理。 应用场景 1、需要扩展、增强或者减弱一个类的功能如本例。 四、装饰器模式的缺点 1、多层装饰器的调试和维护有比较大的困难。
http://www.sczhlp.com/news/249793/

相关文章:

  • 做网站准备的资料男女做某事网站
  • idc网站模板潍坊制作网站的公司
  • 2025年比较好的导热油锅炉厂家推荐及选择参考
  • 国内优质的一物一码公司推荐
  • 2025年知名的PP防撞碳晶板厂家推荐及选择参考
  • 2025年质量好的钢结构原材料销售厂家最新用户好评榜
  • 2025年优秀的核电冷却塔厂家最新推荐排行榜
  • 佛山网站建设计建设银行网站用户密码找回
  • 网站建设外包协议wordpress屏蔽谷歌
  • 服务器放n个网站哪个网站做自行车评测的
  • 免费建设网站有哪些网站建设企业有哪些
  • 企业网站 论文国外做兼职的网站有哪些
  • 购物网站开发公司建网站怎么样才能流畅
  • 免费的网站推广怎么做效果好?网上营销型网站有哪些
  • 北京网站开发多少钱人力外包公司到底值不值得去
  • 江苏建设信息网站有时候打不开秦皇岛市教育考试院
  • 下城区网站建设价格查询sql2005做网站
  • 木渎网站建设十大购物网站
  • 环艺做网站招商网站建设地点
  • 深圳优秀网站建设价格海口网站建设费用
  • 宜兴做网站的公司怎么自己做图片
  • 长宁区网站设计建设wordpress实现文件上传
  • 怎么用wordpress建站在线网页截图工具
  • 四川省建设人才网站2018邢台哪个公司做网站
  • 苏州网站建设思创网站服务器价格表
  • 全国最好网站建设海口网站建设的开发方案
  • 如何在网站开发国外大客户地产集团网站建设
  • 泰州手机网站制作网站出现404
  • 宁波网站推广营销公司专门做西装网站
  • 酒泉网站建设优化网站的建设书籍