前言
装饰设计模式系列文章
装饰设计模式(一) - 吃饭小示例
装饰设计模式(二) - RecyclerView添加头部和底部
装饰设计模式(三) - 源码中用到的装饰设计模式
1. 概述
前边两节我们讲解了装饰设计模式的定义、写了装饰设计模式的小示例 - 吃饭小示例、RecyclerView添加头部和底部,那么这一节我们就主要来看下,在源码中所用到的装饰设计模式。
2. 源码中用到的装饰设计模式
1>:ListView的 Adapter 源码;
2>:ContextWrapper源码:
把Context传递过来,用ContextWrapper包裹以下;
3>:IO的输入输出流;
/**
* Email: 2185134304@qq.com
* 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