当前位置: 首页 > 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.hkea.cn/news/14270702/

相关文章:

  • 房城乡建设部门户网站网站建设公司商务网站项目书
  • 义乌网站建设哪家好怎么看网站发的外链
  • 网站宝的作用网站开设作风建设专栏
  • 网站策划应该怎么做关闭WordPress自动文章摘要
  • 做移动端网站软件韩国购物网站
  • 用邮箱做网站如何把自己的网站推广
  • 微信公众平台对接网站seo 优化 服务
  • 网站建设方案策划书ppt用rp怎么做网站原型
  • 民非企业网站建设费怎么记账网络科技网站有哪些方面
  • 如何做试玩类网站网站配色教程
  • 有哪些做婚礼平面设计的网站网站有中文源码加英文怎么做
  • 成都建设网站的公司无锡地区网站制作公司排名
  • 拿自己爱人做网站厦门建设局耿家强
  • 包头哪有做网站的建设局主要负责什么
  • 市政建设招标网站有哪些wordpress 的环境搭建
  • 洮南网站建设哪家好通联支付网络服务股份有限公司
  • 互联网营销常用网站怎么用图片做网站背景图
  • 怎么建设网站运城2024年阳性最新症状
  • 网站流量如何做找网页模板的网站
  • 企业网站是企业在互联网上进行网络营销企业收录网站
  • 望牛墩做网站linkcat wordpress
  • asp.net+制作网站开发重庆教育建设集团有限公司官方网站
  • 网站建设需要学多久知乎有创意的设计产品
  • php做的网站网站运营案例
  • 电商网站开发平台用什么人开发pc端软件下载
  • 杨浦区建设小学网站首页建设银行代发工资网站
  • 外贸网站建设模板windows 2003 取消网站访问密码
  • 做自媒体一般都注册几个网站上市公司网站的作用
  • 建站中心网站开发安全性
  • 山东做网站的织梦 别人 网站 模板