装饰者设计模式的主要用是给子类增加功能,使生成的子类更加灵活。
我们来看一下Android中使用的到装饰者模式,首先来看一下uml图。
我们可以看到从Context派生出了很多的子类,每个子类的功能和方法都在增强。通过使用装饰者模式,可以产生更加强大的子类。
在上图中核心的类是ContextWrapper类,这个类除了继承自Context之外,还保存了一个ContextImpl类的引用。
使用装饰者模式,避免了使用直接继承一个基础的类,而是继承一个装饰类,在子类较多的情况下,工程项目的类结构更加清晰,更加便于维护。
再举一个jdk中的例子,Reder类也有用装饰者模式
装饰者模式规范化了给一个类添加功能的方式,增加功能就扩展自装饰类而不是原类,使工程结构更加清晰。