最近对接口有了深一点的理解,以及什么是解耦
来源:互联网 发布: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
- 最近对接口有了深一点的理解,以及什么是解耦
- java 对接口的一点理解
- 对CSocket及其运行机制有了较深的理解
- 对字节填充的一点理解,以及一小段代码
- 最近关于jquery的一点理解
- 对ActiveX的一点理解
- 对inherited的一点理解
- 对管理信息系统的一点理解
- 对主力的一点理解
- 对HANDLE_MSG()的一点理解
- 对__threadfence的一点理解
- 对makefile的一点理解
- 对ibatis的一点理解
- 对中断的一点理解
- 对Zigbee的一点理解
- 对AndroidRuntime的一点理解
- 对HANDLE_MSG()的一点理解
- 对软件工程的一点理解
- 源码编译安装Ambari
- 布局平分,中间有竖线,如dialog里取消确定
- [ 模板 ] Treap指针版
- 润乾报表超链接中对参数进行加密解密
- Caffe+ubuntu14.04+cuda8.0+opencv249+python27
- 最近对接口有了深一点的理解,以及什么是解耦
- 实验室应急指挥系统上的跟踪小程序
- 逐浪CMS2 x3.8新功能:定时执行C#代码让二次开发虎虎添翼
- QList (链表) & QVector (数组)
- SQL的基于Qt的编程实践---1--数据库
- 工作中常用的第三放的框架
- window.onload的简单使用
- QT配置
- 修改了TabPagerIndicator开源库的一些bug