美文网首页
设计模式之装饰器模式(Decorator Pattern)

设计模式之装饰器模式(Decorator Pattern)

作者: 新生代农民工No1 | 来源:发表于2021-05-27 14:11 被阅读0次

装饰器模式简介

装饰器模式(Decorator Pattern)在不改变原对象的基础上,通过对其进行包装和拓展,使原有对象满足更复杂的需求。这种模式属于结构性模式。

为什么使用装饰器模式

  • 灵活: 为对象添加功能的时候,装饰器模式比继承更为灵活,并且可以把功能分离到每个装饰器中;
  • 可复用: 装饰对象和原对象具有相同的接口,可以使客户以与原对象相同的方式使用装饰对象;
  • 减少子类扩张:扩展功能可以在装饰器中实现;

组件

  • 抽象组件(Component):定义了一组抽象的接口,规定这个被装饰类有哪些功能;
  • 具体构件(ConcreteComponent):实现这个抽象组件的所有功能的具体类;
  • 装饰器(Decorator):持有一个具体的被装饰对象,并实现接口类继承的公共接口;
  • 具体的装饰器(ConcreteDecorator):具体的装饰器实现者,负责实现装饰器角色定义的功能;
装饰器模式

使用场景

  • 不影响其他对象的情况下,以动态、透明的方式给对象增加职责
  • 不能使用子类进行扩展的时候
  • 限制对象的执行条件

Note:使用装饰器模式会出现更多的代码,更多的类,增加程序的复杂性

总结

装饰器模式本质上是对现有类对象的包装和扩展,从而得到一个加强版的对象。
装饰器模式会导致设计中出现许多小类,如果过度使用,会使程序变得很复杂。
装饰模式是针对抽象组件(Component)类型编程。如果你要针对具体组件编程时,就应该重新思考你的应用架构,预判装饰者是否合适。当然也可以改变Component接口,增加新的公开的行为,实现“半透明”的装饰者模式。在实际项目中要做出最佳选择。

结尾:欢迎关注我的简书!您的鼓励是我最大动力!

相关文章

网友评论

      本文标题:设计模式之装饰器模式(Decorator Pattern)

      本文链接:https://www.haomeiwen.com/subject/ovgksltx.html