学习了何红辉、关爱民写的《Android设计模式》,对于面向对象的六大原则有进一步的理解,特此根据自己的理解记录总结一下
/** * 缓存到sd卡 * @param url 图片的url * @param bitmap bitmap对象 */ public void put(String url ,Bitmap bitmap){ FileOutputStream output = null; try { output = new FileOutputStream(cacheDir+url); bitmap.compress(Bitmap.CompressFormat.PNG,100,output); } catch (FileNotFoundException e) { e.printStackTrace(); }finally { //无论是否有异常,都要关闭流 try { if(output!=null){ output.close(); } } catch (IOException e) { e.printStackTrace(); } } }这段代码的可读性我就不说了,各种try...catch,没办法,因为在操作完流之后,要关闭流,可是有没有发现,如果你在类中加入的可关闭对象过多的时候,你的关闭代码就写的到处都是,这明显让人很不爽,看看jdk1.6的API,所有流都实现了Closeable接口,代表着可关闭,既然是这样,我们就把Closeable封装一下:
import java.io.Closeable; import java.io.IOException; /** * Created by Administrator on 2016/3/1. */ public class CloseableUtil { public static void close(Closeable closeable){ try { if(closeable!=null){ closeable.close(); } } catch (IOException e) { e.printStackTrace(); } } }
/** * 缓存到sd卡 * @param url 图片的url * @param bitmap bitmap对象 */ public void put(String url ,Bitmap bitmap){ FileOutputStream output = null; try { output = new FileOutputStream(cacheDir+url); bitmap.compress(Bitmap.CompressFormat.PNG,100,output); } catch (FileNotFoundException e) { e.printStackTrace(); }finally { CloseableUtil.close(output); } }发现嵌套的try去掉了,瞬间觉得舒服很多