定义:装饰器模式是继承的一种替代方案,但是比继承更加灵活

二、源码分析

2.1Context

Context是一个抽象类,它的实现类是ContextImpl,但是如果有些功能ContextImpl实现不了,需要扩展ContextImpl的功能时,ContextWrapper就出现了,ContextWrapper持有ContextImpl,Application,Service,Activity都直接或者间接的继承ContextWrapper,这就体现出装饰器模式了,ContextWrapper装饰了ContextImpl

ContextWrapper中实现Context的方法全是通过它持有的mBase对象来实现的。这样它(ContextWrapper)派生出的子类就可以在不改变原始context(mBase对象)的情况下扩展Context的行为。 无论是 ActivityService还是Application,它们本质都是一个 ContextWrapper,都是Context的一个具体装饰者的角色,都是通过持有 ContextImpl 对象,在 ContextImpl 的基础上进一步拓展各自的特色功能和逻辑。

Google官方查看源码网站(支持方法调用跳转查看):https://cs.android.com/

2.1 ListView添加header和footer