• 设计模式(三)—— 装饰者模式


    装饰者模式:动态地将责任附加到对象上。若要拓展功能,装饰者提供了比继承更有弹性的替代方案。

    一般装饰者包括组件和装饰者对象,组件基类包含所需要装饰的部分,具体组件和装饰类都继承与组件基类。这样做的保证是能让装饰者与组件是同一个类型。

    装饰类一般有组件的引用对象,通过引用对象完成装饰功能,并且可以拓展新的功能。像Java中的I/O。

    装饰模式比继承要灵活。避免了继承体系臃肿。而且降低了类于类之间的关系。(继承体系的时候,缓冲类,必须继承相应的类。)

    装饰类因为增强已有对象,具备的功能和已有的是相同的,只不过提供了更强功能。所以装饰类和被装饰类通常是都属于一个体系中的。(可以理解为实现共同的接口,或继承一样父类)结构上来说,由原来的继承结构,变成了现在的组合结构(我里面有你的结构)。

    装饰设计模式灵活在哪呢?

    继承不要写的过多,不要以继承为主。产生子类过多,体系会显得非常臃肿。假设现在有个对象,是一年前写的,现在你新来到公司,觉得他这个类的功能不够用了。我自己写个类,把他的对象传进来,然后就可以进行加强了,当我写的功能有问题的时候,要是发现我的有问题的时候,就可以把我的注释掉,然后继续使用原来的。就如同上一次的例子里面,扩展的PersonNow的方法发生了问题,那么可以注释掉不用,继续使用PersonBefore.eat();模块功能还在。项目继续可以使用。

  • 相关阅读:
    nginx并发数设置_Nginx Ingress 高并发实践
    推荐一个国人开源的推荐系统
    异步并发利器:实际项目中使用CompletionService提升系统性能
    JDK中CompletableFuture类
    mysql日志redo log、undo log、binlog
    <a>标签下载文件 重命名失败 download 无效
    nginx geo黑名单
    夜莺微信报警-V3
    分布式事务的学习
    php实现AES/CBC/PKCS5Padding加密解密(又叫:对称加密)
  • 原文地址:https://www.cnblogs.com/dlvguo/p/9662172.html
Copyright © 2020-2023  润新知