前言
接口隔离原则英文名称是InterfaceSegregation Principles,缩写是ISP。ISP的定义是:客户端不应该依赖它不需要的接口。另一种定义是:类间的依赖关系应该建立在最小的接口上。
作用
接口隔离原则将非常庞大,臃肿的接口拆分成更小的和更具体的接口,这样客户将会只需要知道他们感兴趣的方法。
目的
接口隔离的目的是系统解开耦合,从而容易重构,更改和重新部署。
范例
public final class CloseUtils{
private CloseUtils(){}
//关闭Closeable对象 @param closeable
public static void closeQuietly(Closeable closeable){
if(null!=closeable){
try{
closeable.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
}
我们把这段代码运用到put方法如下所示:
public void put(String url, Bitmap bmp){
FileOutputStream fileOutputStream=null;
try{
fileOutputStream=new FileOutputStream(cacheDir+url);
bmp.compress(CompressFormat.PNG,100,fileOutputStream);
}catch(FileNotFoundException){
e.printStackTrace();
}finally{
CloseUtils.closeQuietly(fileOutputStream);
}
}
分析
CloseUtils的closeQuietly方法的基本原理就是依赖于Closeable抽象而不是具体实现,并且建立在最小化依赖原则的基础上,它只需要知道这个对象是可关闭的,其他一概不关心,这就是接口隔离原则。