装饰设计模式(三) - 源码中用到的装饰设计模式

前言

装饰设计模式系列文章
装饰设计模式(一) - 吃饭小示例
装饰设计模式(二) - RecyclerView添加头部和底部
装饰设计模式(三) - 源码中用到的装饰设计模式

1. 概述


前边两节我们讲解了装饰设计模式的定义、写了装饰设计模式的小示例 - 吃饭小示例、RecyclerView添加头部和底部,那么这一节我们就主要来看下,在源码中所用到的装饰设计模式。

2. 源码中用到的装饰设计模式


1>:ListView的 Adapter 源码;
2>:ContextWrapper源码:
把Context传递过来,用ContextWrapper包裹以下;


装饰设计模式(三) - 源码中用到的装饰设计模式_第1张图片
图片.png

3>:IO的输入输出流;

/**
 * Email: [email protected]
 * Created by Novate 2018/5/12 20:03
 * Version 1.0
 * Params:
 * Description:
*/

public class MainActivity extends AppCompatActivity {

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        try {

            FileReader fileReader = new FileReader("xxx.file") ;
            // FileReader只能读取单个
            // fileReader.read() ;

            // BufferedFileInputStream、BufferedFileOuputStream高效字节流
           BufferedFileInputStream bis = new BufferedFileInputStream(new FileInputStream());

            // 使用BufferedReader 把 FileReader包装之后,最终操作还是 FileReader
            BufferedReader br = new BufferedReader(fileReader) ;
            // 包装之后 ,就变得强大了,可以读一行 ,
            br.readLine() ;

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

比如上边的BufferedFileInputStream、BufferedFileOutputStream高效字节流,都是采用装饰设计模式的,其中Buffered只是起高效作用,真正的读写文件还是里边的FileInputStream或者FileOutputStream。

代码已上传至github:
https://github.com/shuai999/Architect_day11.git

你可能感兴趣的:(装饰设计模式(三) - 源码中用到的装饰设计模式)