オブジェクト向け六原則のインタフェース分離原則

3073 ワード

IOストリームを操作するときは、最後にストリームを閉じるときはtry/catch、ストリームが多いときはtry/catchがたくさんあります.以下に示します.
private void put(String path, Bitmap bitmap) 
    {
        FileOutputStream fos = null;
        try 
        {
            fos = new FileOutputStream(path);
            bitmap.compress(CompressFormat.JPEG, 100, fos);
        } catch (FileNotFoundException e) 
        {
            e.printStackTrace();
        }finally
        {
            if(fos != null)
            {
                try 
                {
                    fos.close();
                } catch (IOException e) 
                {
                    e.printStackTrace();
                }
            }
        }

今日はオブジェクト向けインタフェース分離の原則を見て、このように処理できるようになりました(ツールクラスは1つ増えましたが、コードは明らかに見栄えがよくなりました:

        public final class CloseUtils
        {
            private CloseUtils()
            {

            }
            public void closeQuietly(Closeable closeable)
            {
                if(closeable != null)
                {
                    try 
                    {
                        closeable.close();
                    } catch (IOException e) 
                    {
                        e.printStackTrace();
                    }
                }
            }
        }

このとき上のput()メソッドはこのように書くことができます.コードは簡潔で見やすいのではないでしょうか.また、このCloseUtilsは閉じられるオブジェクトにも適用でき、コードの再利用性を保証しています.
    private void put(String path, Bitmap bitmap) 
    {
        FileOutputStream fos = null;
        try 
        {
            fos = new FileOutputStream(path);
            bitmap.compress(CompressFormat.JPEG, 100, fos);
        } catch (FileNotFoundException e) 
        {
            e.printStackTrace();
        }finally
        {
            if(fos != null)
            {
                CloseUtils.closeQuietly(fos);
            }
        }
    }