装饰者模式是针对的这样一种情况,程序对于一个类在不同情况下需要不同的功能,而这些功能都是在不改变最简洁功能的基础上实现的。我们可以将最核心的功能抽取出来单独作为一个类,装饰者只要持有该对象的一个引用,然后利用原有功能重写对应的方法即可。还有一点需要注意的是,装饰者对象要么是原对象的子类要么拥有共同的父接口,这样装饰对象也可以作为一个原对象传入另一个装饰者对象,以实现对原对象一层一层装饰的作用。
装饰者模式的好处是,让程序遵循了开闭原则。将核心功能分离出来,降低了功能之间的耦合。可以对原功能按不同顺序一层一层的装饰,增加了代码的灵活性。
装饰者模式类结构图(这个是最复杂的,可以按实际情况来简化)