先上结论:
这也是一个Android客户端开发中经常使用到的一个设计模式,最典型的就是OkHttp、Retrofit、Glide,Android源代码中你最常见到的Context上下文,也是采用的装饰者模式。
废话不多说,开干
简单总结下装饰者模式的定义:
动态地给一个对象添加一些额外的职责,就扩展功能而言,装饰者模式提供了一种比使用子类更加灵活的替代方案。
这个模式跟编程中的继承思想很像,但是他们有显著的区别:
-
- 通过组合(将对象作为另一个对象的成员变量)的方式,动态地为对象添加额外的功能或行为。
- 不需要修改原有类的代码,即可在不改变对象接口的情况下,为其添加新的职责。
-
继承:
- 通过子类继承父类的方式,扩展父类的功能或行为。
- 子类可以重写父类的方法,或增加新的方法。
- 继承是静态的,即在编译时确定子类与父类的关系。
上理论:
一、模式结构
装饰者模式主要包含以下几个角色:
- 抽象组件(Component):这是一个抽象接口或抽象类,它声明了在具体构建中实现的业务方法,并可以引进一个可以使客户端以一致的方式处理未被装饰的对象以及装饰之后的对象的方法,实现客户端