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

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);

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值