zoukankan      html  css  js  c++  java
  • Decorator

    装饰模式,他的本质是对核心对象的行为进行封装。比方说ClassA一个方法OperationA(),如果想要在执行OperationA之前想要执行OperationB(),同时又不影响ClassA,这个时候就可以使用装饰模式,设计ClassB,里面有OperationB(),执行完OperationB内容之后再来执行类A的operationA()操作。这里面的类B维持一个对类A的引用,这样可以保证对于操作B执行完毕之后调用类A的OperationA()

    image

    这就好像是给ClassA穿上了意见衣服,或者说加上了一个装饰的感觉,其实就是对行为一种封装。这种封装的好处是对于原始类(ClassA)没有任何影响。

    对于拨号猫,有的希望他的拨号声音很大,有的希望拨号声音正常,对于拨号音量调节这个行为具有不定性,那么可以使用装饰模式,来实现定制化:
    image

    对于HayesModem以及ZoomModem直接继承自Modem,可以理解为他们是目标类(被操作类)。他们有了一个设置音量的行为,对于LoudDialModem而言,他是作为类(操作类),他会调用其中某一种Modem,但是在调用他们的Dial的方法之前,它会设置一下音量为11(大声),这样就对于拨号这个行为进行了修饰。所以对于“修饰”模式而言,保持对于基类接口的引用很重要。所以操作类本质是对目标类的一个封装,进而实现对于目标类行为的二次封装。

  • 相关阅读:
    JQuery选择器
    JQuery语法
    数据库分页查询
    webservice开发说明文档
    javaweb项目中的文件上传下载功能的实现
    表单中input的type用法详解
    关于所谓大数据的一些疑惑
    spring boot 常见的第三方集成
    spring boot + apache camel 传输文件
    spring boot 1.x配置,不断完善中
  • 原文地址:https://www.cnblogs.com/xiashiwendao/p/3209406.html
Copyright © 2011-2022 走看看