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

来源:互联网 发布:calendar java设置今天 编辑:程序博客网 时间:2024/05/16 11:04
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);    }}
0 0