您的位置:首页 > 其它

最近对接口有了深一点的理解,以及什么是解耦

2016-11-25 13:36 211 查看
package packageExercise;
/*  因为方法的多态,所以接口的调用者只需要调用接口,
*  具体的业务交给接口的实现者去实现
*  即使用接口,可以避免接口调用方直接参与业务逻辑实现,
*  所以能避免接口调用与业务逻辑实现紧密关联,即解耦
*
*   从下面的 setDisk(Disk disk)方法中,
*   我们传递的不是某个具体的对象,
*   而是一个抽象的“闹钟功能”的概念,
*   至于实际上传递的是什么参数,
*   要看具体情况(取决于我让哪种设备"have a"存储功能)。
*   实际上,我们只关心“具有存储功能”这件事,
*   我们不关心它是由谁实现的和怎样实现的,
*   这就做到了“请求”和“实现”分离开来,
*   这就是接口的解耦!!!
*
*
* */
public class Demo2 {

public static void main(String[] args){
UDisk uDisk = new UDisk();
DownloadTool downloadTool = new DownloadTool();
downloadTool.setDisk(uDisk);
downloadTool.downLoad(11);
CDDisk cdDisk = new CDDisk();
downloadTool.setDiskCD(cdDisk);//此CD没有实现Disk接口,所以不适用于setDisk方法,需另建方法,
downloadTool.downloadCD(111);
CDDisk2 cdDisk2 = new CDDisk2();
downloadTool.setDisk(cdDisk2);
downloadTool.downLoad(1111);
System.out.println(uDisk instanceof Disk);
}
}
//定义一个接口:磁盘,有存储数据的功能
interface Disk{
void save(int message);
}
//U盘和硬盘都装有磁盘,都有存储功能。都可以实现这个接口
class UDisk implements Disk{

public void save(int message) {
System.out.println("U盘通过U盘的方式存储了数据Message:" + message);
}

}
class HardDisk implements Disk{

public void save(int message) {
System.out.println("硬盘通过硬盘的方式存储了数据Message" + message);

}

}
class DownloadTool{
Disk disk;
CDDisk cdDisk;
void setDisk(Disk disk){
this.disk = disk;
}
void downLoad(int message){
this.disk.save(message);
}
void setDiskCD(CDDisk cdDisk){
this.cdDisk = cdDisk;
}
void downloadCD(int message){
this.cdDisk.save(message);
}
}
class CDDisk{
public void save(int message){
System.out.println("CD通过CD的方式存储了数据Message:" + message);
}
}
class CDDisk2 implements Disk{

public void save(int message) {
System.out.println("CD通过CD的方式存储了数据Message:" + message);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: