Android 装饰者模式
来源:互联网 发布:js防水施工工艺 编辑:程序博客网 时间:2024/06/06 01:45
装饰者模式
1、定义
动态地给一个对象添加一些额外的职责,就增加功能来说,装饰者模式相比生成子类更加灵活,提供了有别于继承的另一种选择。
2、使用场景
需要动态且透明地扩展类的功能时。
3、装饰者的UML图
![这里写图片描述](http://img.blog.csdn.net/20160609163506648)
4、装饰者通用代码
抽象组件类
/** *抽象的方法,这个随你做 *同样地你也可以增加更多的抽象方法 /public abstract class Component{ public abstract void operate();}
组件具体实现类
public class ConcreteComponent extends Component { @Override public void operate() { //具体逻辑 }}
抽象装饰者
public class Decorator extends Component { private Component component;//持有一个Component对象的引用 /** * 必须要有构造方法,需需要一个Component类型的对象 */ public Decorator(Component component) { this.component = component; } @Override public void operate() { component.operate(); }}
装饰者的具体实现类
/** * ConcreteDecoratorB与ConcreteDecoratorA代码类似,不再给出 */public class ConcreteDecoratorA extends Decorator { public ConcreteDecoratorA(Component component) { super(component); } @Override public void operate() { operateA(); super.operate(); operateB(); } /** * 自定义的装饰方法A */ private void operateA() { //装饰方法的逻辑 } /** * 自定义的装饰方法B */ private void operateB() { //装饰方法的逻辑 }}
客户调用类
public class Client { public static void main(String [] args){ //构造被装饰组件对象 Component component = new ConcreteComponent(); //根据组件对象构造装饰者对象A并调用,此时相当于给组件对象增加装饰者A的功能方法 Decorator decoratorA = new ConcreteDecoratorA(component); decoratorA.operate(); //根据组件对象构造装饰者对象B并调用,此时相当于给组件对象增加装饰者B的功能方法 Decorator decoratorB = new ConcreteDecoratorB(component); decoratorB.operate(); }}
5、装饰者模式的4大角色
1、Component:抽象组件。可以是一个接口或者是抽象类,其充当的就是被装饰的原始对象,用来定义装饰者和被装饰者的基本行为。2、ConcreteComponent:组件具体实现类。该类是 Component 类的基本实现,也是我们装饰的具体对象。3、Decorator:抽象装饰者装饰组件对象,其内部一定要有一个指向组件对象的引用。在大多数情况下,该类为抽象类,需要根据不同的装饰逻辑实现不同的具体子类。当然,如果是装饰逻辑单一,只有一个的情况下我们可以忽略该类直接作为具体的装饰者。4、ConcreteDecoratorA 和 ConcreteDecoratorB:装饰者具体实现类。对抽象装饰者的具体实现。
6、装饰者模式实现的5大步骤
1、继承或者实现 Component 组件,生成一个 Decorator 装饰者抽象类;
2、在生成的这个 Decorator 装饰者类中,增加一个 Component 的私有成员对象;
3、将 ConcreteComponent 或者其他需要被装饰的对象传入 Decorator 类中并赋值给上一步的 Component 对象;
4、在装饰者 Decorator 类中,将所有的操作都替换成该 Component 对象的对应操作;
5、在 ConcreteDecorator 类中,根据需要对应覆盖需要重写的方法。
阅读全文
1 0
- Android 装饰者模式
- Android中装饰者模式
- Android 设计模式之装饰者模式
- Android与设计模式——装饰者(Decorator)模式
- Java/Android 设计模式系列(7)--装饰者模式
- Android设计模式之装饰者模式(Decorator Pattern)
- Android源码装饰模式---ContextWrapper
- 装饰者模式(Derector)
- 装饰者模式
- Decorator 装饰者模式
- 装饰者设计模式
- 装饰者模式
- 装饰者模式
- 装饰者模式
- 装饰者模式(Decorator)
- 装饰者模式
- 装饰者模式
- 装饰者模式
- select标签 获取选中的option的value及Text内容
- python作业
- 如何把asp.net网站发布到自己的电脑,外网也可以访问
- 2811:熄灯问题 百炼oj
- [Nim] SRM 304 div1 TheXGame
- Android 装饰者模式
- 常用指令
- Window10 下部署Webpack+Vuejs构建前端环境(1)
- python scapy 网络包管理工具--进阶篇
- 跳转到google Play市场
- banner
- C语言 查找书籍
- Scala练习-选择排序
- TrainSimulator(Railworks)官方开发文档