java装饰者模式
来源:互联网 发布:王小波与李银河 知乎 编辑:程序博客网 时间:2024/06/07 23:05
1. 什么是装饰者模式?
装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。
2.装饰者模式的类图
3. 为何装饰者和被装饰者有相同的“接口”?
因为装饰者必须能够取代被装饰者
例子:
jdk中的io是众所周知的装饰者模式,此处编写自己的java i/o 装饰者 把输入流内的所有大写字符转换成小写
package decorator_io;import java.io.FilterInputStream;import java.io.IOException;import java.io.InputStream;/** * 编写自己的java i/o 装饰者 把输入流内的所有大写字符转换成小写 * * @author chenhong * * * */public class LowerCaseInputStream extends FilterInputStream {protected LowerCaseInputStream(InputStream in) {super(in);// TODO Auto-generated constructor stub}/** * 读取单个字符 * * */public int read() throws IOException {int c = super.read();return c == -1 ? c : Character.toLowerCase(c);}/** * 读取字符数组 * */public int read(byte[] b, int offset, int len) throws IOException {int result = super.read(b, offset, len);for (int i = offset; i < offset + result; ++i) {b[i] = (byte) Character.toLowerCase(b[i]);}return result;}}
package decorator_io;import java.io.BufferedInputStream;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;public class Test {public static void main(String[] args) {int c;try {InputStream in = new LowerCaseInputStream(new BufferedInputStream(new FileInputStream("src/decorator_io/Test.java")));while ((c = in.read()) > 0) {System.out.print((char) c);}} catch (IOException e) {e.printStackTrace();}}}
0 0
- java装饰者模式
- Java装饰者模式
- java装饰者模式
- java装饰者模式
- java装饰者模式
- java装饰者模式
- Java装饰者模式
- java装饰者模式
- java装饰者模式
- java装饰者模式
- 装饰者模式java
- JAVA装饰者模式
- Java装饰者模式
- java装饰者模式
- Java装饰者模式
- JAVA装饰者模式
- JAVA装饰者模式
- Java-装饰者模式
- PagerSlidingTabStrip源码分析
- elasticsearch在windows下的安装
- 编程打印三角形数字图案.java
- 华为S2403H做镜像端口
- hdu 2795 Billboard(线段树)
- java装饰者模式
- shared_ptr做资源删除器
- android开发必备知识:ndroid使用全局变量
- STM32f103的电阻触摸屏的五点校正算法
- hls流媒体、传统流媒体、http流媒体、adobe流媒体
- MySQL使用经验总结
- 如何开机进入文本模式
- SVN插件
- 不同进程间切换