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(大声),这样就对于拨号这个行为进行了修饰。所以对于“修饰”模式而言,保持对于基类接口的引用很重要。所以操作类本质是对目标类的一个封装,进而实现对于目标类行为的二次封装。

  • 相关阅读:
    作业
    第一次作业
    临时和永久关闭firewalld与selinux
    联合删除
    使用CascadingDropDown实现级联式下拉框
    使用createElement动态创建HTML对象.
    关于DotNetZip的用法
    网站性能优化:cache-control设置详解
    百度蜘蛛Baiduspider User-Agent字段更新与IP判断
    (转)一个简单,方便的七牛云存储的客户端(收藏)
  • 原文地址:https://www.cnblogs.com/xiashiwendao/p/3209406.html
Copyright © 2011-2022 走看看