博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
装饰者模式
阅读量:2256 次
发布时间:2019-05-09

本文共 1483 字,大约阅读时间需要 4 分钟。

装饰者模式

     对原有功能进行增强。装饰模式含有一下几部分。抽象构件、具体构件、抽象装饰、具体装饰。原本功能是具体构件中的功能,现在要通过装饰来对具体构建进行增强。

1. 抽象构件

    定义一个接口,来确定他的子类要实现怎样的功能。

package com.wx.demo01;//抽象构建角色public interface Component {    public void operation();}

2. 具体构件

   定义具体构件类,实现抽象构件接口,此类就是原本的功能。

package com.wx.demo01;//具体构建角色public class ConcreteComponent implements Component{    public void operation() {        System.out.println("调用具体构件角色的方法operation()");    }    public ConcreteComponent(){        System.out.println("创建具体构建角色");    }}

3.抽象装饰

   现在需要对原本功能进行装饰增强。定义抽象装饰类,实现抽象构件接口。

package com.wx.demo01;//抽象装饰角色public class Decorator implements Component{    private Component component;    public  Decorator(Component component){        this.component = component;    }    public void operation() {        component.operation();    }}

4.具体装饰

   继承抽象装饰,在具体装饰中添加增加的功能。

package com.wx.demo01;//具体装饰角色public class ConcreteDecorator extends Decorator{    public ConcreteDecorator(Component component) {        super(component);    }    public void operation(){        super.operation();        addedFunction();    }    public void addedFunction(){        System.out.println("为具体构件角色增加额外的功能addedFunction()");    }}

5. 测试类

package com.wx.demo01;public class DecoratorPattern {    public static void main(String[] args) {        Component component = new ConcreteComponent();        component.operation();        System.out.println("-----------------------");        Component d = new ConcreteDecorator(component);        d.operation();    }}

6. 测试结果

                                  

转载地址:http://zsrdb.baihongyu.com/

你可能感兴趣的文章
WebApp性能优化的总结
查看>>
HTML文档中使用JavaScript
查看>>
一个前端工程师的自我修养
查看>>
AndroidStudio签名打包爬坑记
查看>>
Android文件路径小结
查看>>
JavaScript基本概念
查看>>
理解JavaScript函数参数
查看>>
JavaScript变量类型检测
查看>>
JavaScript对象的创建和属性访问
查看>>
Array数组使用总结
查看>>
JavaScript中URL编码方法
查看>>
微信小程序数据绑定
查看>>
JavaScript执行环境及作用域
查看>>
Android中System.exit(0)退出失败
查看>>
JavaScript函数和递归
查看>>
Android中Dialog中自定义EditView导致软键盘无法弹出
查看>>
Activity异常情况下生命周期分析
查看>>
读书笔记-Activity启动模式
查看>>
读书笔记-IntentFilter匹配规则
查看>>
读书笔记-Android对象序列化
查看>>