设计模式之装饰者模式
来源:互联网 发布:入门鼠标推荐 知乎 编辑:程序博客网 时间:2024/06/17 19:32
定义
动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。
使用场景
Java的IO流是最经典的装饰模式。其中以输入流为例,其中InputStream相当于装饰模式中的Component,其中FileInputStream直接继承InputStream,相当于装饰模式中的ConcretComponent,FilterInputStream相当于装饰模式中的Decorator,而它的子类DataInputStream,BufferedInputStream相当于装饰模式中的ConcretDecorator。
代码示例
在本示例中新增一个加密输出流
实现简单的加密
package decrote;import java.io.FilterOutputStream;import java.io.IOException;import java.io.OutputStream;public class EncryptionOutputStream extends FilterOutputStream{ public EncryptionOutputStream(OutputStream out) { super(out); // TODO Auto-generated constructor stub } public void write(int a) throws IOException { a += 2; if (a >= 97+26) { a -= 2; } super.write(a); }}
客户端代码
package decrote;import java.io.BufferedOutputStream;import java.io.DataOutputStream;import java.io.FileOutputStream;import java.io.IOException;public class Client { public static void main(String[] args) throws IOException { DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new EncryptionOutputStream(new FileOutputStream("11.txt")))); dos.write("abcdef".getBytes()); dos.close(); }}
运行结果:
打开11.txt,可见其内容是:
cdefgh
阅读全文
0 0
- 设计模式之装饰者设计模式
- 设计模式 之 装饰者
- 设计模式之装饰者模式
- 设计模式之装饰者模式
- 设计模式之Decorator(装饰者模式)
- 设计模式之五---装饰者模式
- 设计模式之---装饰者模式
- c++设计模式之装饰者模式
- Php设计模式之装饰者模式
- java设计模式之装饰者模式
- 设计模式之装饰者模式
- 【设计模式】之装饰者模式
- HeadFirst设计模式之装饰者模式
- c++设计模式之装饰者模式
- 设计模式之装饰者模式
- 设计模式之--装饰者模式
- 设计模式之装饰者模式
- 设计模式之装饰者模式
- 【Linux】软件安装
- HTML5 Storage JSON
- C
- IDEA构建Hive的UDF函数
- Java网络编程之NIO(ServerSocketChannel/SocketChannel)-yellowcong
- 设计模式之装饰者模式
- 教育思想研究----爱因斯坦论教育
- 【前端面试】前端面试题300道~~熬夜吐血整理
- sscanf类似于正则表达式的进阶用法
- 背包九讲——01背包(降维+常数级优化)
- Java基础学习之Java基本语法(2)【变量的分类】
- 算法学习2
- Codeforces Round #439 (Div. 2) C. The Intriguing Obsession 组合数学
- hibernate 基本