接口为什么能够解耦

NLP自然语言处理 2011-07-31 10:36:16
接口为什么能够解耦
...全文
495 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiukongtiao 2011-07-31
  • 打赏
  • 举报
回复
这样就接解除了与任何具体存储设备的耦合!
xiukongtiao 2011-07-31
  • 打赏
  • 举报
回复
给你一个例子,希望对你有帮助
定义一个接口 磁盘
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类不依赖于任何具体的类,这样就接触了与任何具体存储设备的耦合!
}

}
qybao 2011-07-31
  • 打赏
  • 举报
回复
因为方法的多态,所以接口的调用者只需要调用接口,具体的业务交给接口的实现者去实现
即使用接口,可以避免接口调用方直接参与业务逻辑实现,所以能避免接口调用与业务逻辑实现紧密关联,即解耦

51,408

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧