设计模式(五) 装饰器模式
定义:装饰器模式是继承的一种替代方案,但是比继承更加灵活
二、源码分析
2.1Context
Context是一个抽象类,它的实现类是ContextImpl,但是如果有些功能ContextImpl实现不了,需要扩展ContextImpl的功能时,ContextWrapper就出现了,ContextWrapper持有ContextImpl,Application,Service,Activity都直接或者间接的继承ContextWrapper,这就体现出装饰器模式了,ContextWrapper装饰了ContextImpl
ContextWrapper中实现Context的方法全是通过它持有的mBase对象来实现的。这样它(ContextWrapper)派生出的子类就可以在不改变原始context(mBase对象)的情况下扩展Context的行为。 无论是 Activity
、Service
还是Application
,它们本质都是一个 ContextWrapper
,都是Context
的一个具体装饰者的角色,都是通过持有 ContextImpl
对象,在 ContextImpl
的基础上进一步拓展各自的特色功能和逻辑。
Google官方查看源码网站(支持方法调用跳转查看):https://cs.android.com/
2.1 ListView添加header和footer
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ivan的博客!