面向对象的六大原则之 —— 接口隔离原则
来源:互联网 发布:php pack函数 编辑:程序博客网 时间:2024/06/06 10:38
学习了何红辉、关爱民写的《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去掉了,瞬间觉得舒服很多
为什么我们能这样做,因为在JDK1.6中,所有的流都实现依赖了Closeable接口,具体的实现都在实现了Closeable接口的子类中,所以,这也是依赖倒置原则,子类只需要做细节的事,其他都不关心,这其实就是接口隔离原则,在ImageLoader中的ImageCahce就是接口隔离的运用,我们将ImageCache抽象出来,ImageLoader只需要知道该图片是不是有缓存,没缓存我就去网上下载,不管缓存的具体实现,也就是具体的实现对ImageLoader是隐藏的,它看不到,这就是我们将ImageLoader这个类的作用拆分的更加细致化的结果,ImageLoader跟其他三个实现类都没有直接关系,也就降低了耦合度,自然灵活度就上升了。
单一原则、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则,其实是相辅相成的,他们同一时刻出现的时候,使得一个软件系统更新清晰、最大程度拥抱变化。
上一篇:《面向对象的六大原则之 —— 依赖倒置原则》
0 0
- 面向对象的六大原则之 —— 接口隔离原则
- 面向对象六大原则之接口隔离原则
- 面向对象程序设计的六大原则(4)- 接口隔离原则
- 面向对象六大原则----接口隔离原则,迪米特原则
- 面向对象的六大原则之 —— 单一原则
- 面向对象的六大原则之 —— 开闭原则
- 面向对象的六大原则之 —— 迪米特原则
- 面向对象六大原则(四):接口隔离原则
- 面向对象六大原则(五):接口隔离原则
- 面向对象程序设计六大原则-接口隔离原则
- 面向对象的六原则之接口隔离原则
- 面向对象的原则之接口隔离原则
- 面向对象设计原则——接口隔离原则(ISP)
- 面向对象六大原则-里氏替换原则、依赖倒置原则、接口隔离原则
- 面向对象之接口隔离原则
- 六大设计原则之接口隔离原则
- 设计六大原则之接口隔离原则
- Java设计模式——六大原则之接口隔离
- 微信支付(掃碼支付),開發日誌
- smb 安装
- 安装设备 PrimeSense 1.09_openni2
- hdu1269(邻接表+dfs)
- 【ZOJ3921 2016年浙大2月月赛G】【爆搜+智商贪心剪枝 好题】Guan Dan 2副牌取27张最少出光牌次数
- 面向对象的六大原则之 —— 接口隔离原则
- Android开发技巧——Camera拍照功能
- android 深入浅出 群内“每日一问” 问答总结
- .getClass()、.class、.forName()
- Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 and 6 Web
- Java利用ImageMagick调用linux系统命令实现Ai或者PSD文件转化为jpg或者png文件
- 虚拟机克隆后eth0网卡变成eth2网卡并且IP地址消失问题解决
- 从Bootstrap中分离出tab组件的样式
- wireshark抓包图解 TCP三次握手/四次挥手详解