社区
Java
帖子详情
接口为什么能够解耦
NLP自然语言处理
2011-07-31 10:36:16
接口为什么能够解耦
...全文
495
3
打赏
收藏
接口为什么能够解耦
接口为什么能够解耦
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xiukongtiao
2011-07-31
打赏
举报
回复
这样就接
解除
了与任何具体存储设备的耦合!
xiukongtiao
2011-07-31
打赏
举报
回复
给你一个例子,希望对你有帮助
定义一个接口 磁盘
interface Disk(){
void save(File file);
}
U盘和硬盘都是磁盘,都实现这个接口
class UDisk implement Disk{
void save(File file);
}
class HardDisk implement Disk{
void save(File file);
}
一个需要用磁盘来存储的下载工具
class Download{
Disk disk;//用接口声明,我们不知道,也不用知道,我们未来会存到什么样的磁盘,我们不依赖于任何类型的磁盘,我们只依赖于这个接口
void download(File file){
disk.save(file);
}
void setDisk(Disk disk){
this.disk=disk;
}
public static void main(String[] args){
Download download = new Download();
设置存储目标为U盘
download.setDisk(new UDisk());
文件被存到了U盘
download.download(file);
设置存储目标为硬盘
download.setDisk(new HardDisk());
文件被存到了硬盘
download.download(file);
某天我们想把下载的文件保存到CD里边,我们只需要定义CDDisk类,实现Disk接口就可以不对download本身做任何修改,就可以方便的将文件下载到CD或其他介质里。我们的Download类不依赖于任何具体的类,这样就接触了与任何具体存储设备的耦合!
}
}
qybao
2011-07-31
打赏
举报
回复
因为方法的多态,所以接口的调用者只需要调用接口,具体的业务交给接口的实现者去实现
即使用接口,可以避免接口调用方直接参与业务逻辑实现,所以能避免接口调用与业务逻辑实现紧密关联,即解耦
接口
为什么可以
解耦
本文是转载,且未获得原作者授权。 假设有一个磁盘
接口
,主要用来存储文件。 硬盘和U盘都实现了这个
接口
// 定义一个
接口
磁盘 interface Disk(){ // 保存文件 void save(File file); } // U盘实现 class UDisk implement Disk{ void save(File file); } // 硬盘实现 class Ha...
module
解耦
(一)基于
接口
的module
解耦
在安卓开发中,随着项目的功能不断扩展,一个app主模块往往会变得庞大而复杂,各种业务逻辑高度耦合,导致代码难以维护和测试。为了提高代码的可读性、可复用性和可扩展性,我们需要将一个app主模块拆分成多个子模块(module),每个子模块负责一个独立的功能或业务场景,例如登录、支付、社交等。但是,拆分后的子模块之间可能还需要相互调用或通信,例如登录模块需要调用支付模块的
接口
进行支付验证,或者社交模块需要调用登录模块的
接口
获取用户信息。
[特殊字符] 为什么你的代码一改就崩?依赖倒转原则:用抽象
接口
解耦
的终极指南!
依赖倒转原则(Dependency Inversion Principle,DIP)是面向对象设计中的一个重要原则,它像一把“
解耦
神器”,解决模块之间过度依赖的问题。用一句话概括它的核心思想:高层模块别直接依赖低层模块,大家应该一起依赖抽象;抽象不要依赖具体实现,而具体实现要依赖抽象。 听起来有点绕?别急,我们用一个生活化的例子和代码场景,轻松理解它。
Java的SpringBoot项目中为什么要注入
接口
XxxService而不是具体的实现类XxxServiceImpl
*
解耦
:**通过注入
接口
,实现了服务的调用者(这里是 ReportServiceImpl)和具体的实现细节(WorkspaceServiceImpl)之间的
解耦
。例如,如果有多个实现了 WorkspaceService
接口
的类,并且根据不同的条件需要使用不同的实现类,那么通过注入
接口
,可以很容易地在运行时进行切换。**可测试性:**在进行单元测试时,可以方便地为
接口
创建一个模拟(mock)对象,从而更方便地对依赖该
接口
的类进行测试,而不需要依赖实际的实现类。在 Java 中,通常建议面向
接口
编程。
java:
接口
与实现类
里面没有真正的逻辑。
Java
51,408
社区成员
86,090
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章