设计模式(三)装饰者模式之java.io

本文介绍Java I/O类库中装饰者模式的应用,通过实例展示如何创建一个将输入流中的大写字母转换为小写的装饰者类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 概述
    java.io类库封装了操作系统底层的I/O细节,提供一套简单方便、功能丰富的I/O解决方案。但是包含了太多的小类,如果对java.io类库的设计思路不了解,可能会搞不懂java里面的I/O关系。上一节已经介绍了装饰者模式的工作原理,如果我们知道java.io类库是使用装饰者模式组织的,理解起来会简单一些,下面以输入流(其它流基本相似)为例介绍。
  2. UML
    这里写图片描述
    说明:
    1) InputStream是一个抽象组件。
    2) FilterInputStream是一个抽象装饰者。
    3) 其它继承自InputStream的类是可以被装饰者包装的具体组件。
    4) 继承自FilterInputStream的类是具体的装饰者

  3. 实现
    使用java.io类库,编写一个输入流装饰者示例,实现把输入流内的所有大写字符转成小写。

/**
 * 装饰者类-新的输入流装饰者
 */
public class LowerCaseInputStream extends FilterInputStream {
    protected LowerCaseInputStream(InputStream in) {
        super(in);
    }

    public int read() throws IOException {
        int c = super.read();
        return (c == -1 ? c : Character.toLowerCase((char) c));
    }
}
/**
 * 测试类-新的输入流装饰者
 */
public class IODecoratorTest {
    public static void main(String[] args) throws IOException {
        int c = 0;
        // test.txt的内容:LowerCaseInputStream
        InputStream in =
                new LowerCaseInputStream(
                        new BufferedInputStream(
                                new FileInputStream("D:\\temp\\test.txt")));
        while ((c = in.read()) >= 0) {
            System.out.print((char) c);
        }
        in.close();
    }
}

运行结果:
这里写图片描述

参考资料:
《Head First设计模式》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值