最近对接口有了深一点的理解,以及什么是解耦
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); } }
相关文章推荐
- AE初学的一点理解及有关QI(接口查询)
- C#中理解接口以及接口的作用
- 对I2C总线时序的一点理解以及ACK和NACK(NAK)
- C# 通过 Observer观察者 设计模式 来理解 抽象类 和 接口 应用在什么地方
- IStyleGallery 和IstyleGalleryItem以及IStyleGalleryStorage接口理解
- 什么是 XML 数字签名以及对其深入理解
- PCA降维算法总结以及matlab实现PCA(个人的一点理解)
- C#关于接口,代理以及事件的理解
- 什么是ABR---ABR的一点理解
- PCA降维算法总结以及matlab实现PCA(个人的一点理解)
- AE初学的一点理解及有关QI(接口查询)
- 对JSON的一点认识和理解以及JQuery处理JSON
- 对I2C总线时序的一点理解以及ACK和NACK(NAK)
- PCA降维算法总结以及matlab实现PCA(个人的一点理解)
- 对JSON的一点认识和理解以及JQuery处理JSON
- C#中理解接口以及接口的作用
- 对字节填充的一点理解,以及一小段代码
- linux 启动过程以及 /etc/rc.d/init.d/目录的一点理解
- 什么是IoC以及理解为什么要使用Ioc
- PCA降维算法总结以及matlab实现PCA(个人的一点理解)