日期:2014-05-20  浏览次数:20821 次

接口为什么能够解耦
接口为什么能够解耦

------解决方案--------------------
因为方法的多态,所以接口的调用者只需要调用接口,具体的业务交给接口的实现者去实现
即使用接口,可以避免接口调用方直接参与业务逻辑实现,所以能避免接口调用与业务逻辑实现紧密关联,即解耦
------解决方案--------------------
给你一个例子,希望对你有帮助
定义一个接口 磁盘
interface Disk(){
void save(File file);
}
U盘和硬盘都是磁盘,都实现这个接口
class UDisk implement Disk{
 void save(File file);
}


class HardDisk implement Disk{
 void save(File file);
}

一个需要用磁盘来存储的下载工具
class Download{
Disk disk;//用接口声明,我们不知道,也不用知道,我们未来会存到什么样的磁盘,我们不依赖于任何类型的磁盘,我们只依赖于这个接口


void download(File file){
disk.save(file);
}

void setDisk(Disk disk){
this.disk=disk;
}

public static void main(String[] args){
Download download = new Download();
设置存储目标为U盘
download.setDisk(new UDisk());
文件被存到了U盘
download.download(file);

设置存储目标为硬盘
download.setDisk(new HardDisk());
文件被存到了硬盘
download.download(file);

某天我们想把下载的文件保存到CD里边,我们只需要定义CDDisk类,实现Disk接口就可以不对download本身做任何修改,就可以方便的将文件下载到CD或其他介质里。我们的Download类不依赖于任何具体的类,这样就接触了与任何具体存储设备的耦合!
}

}