Java场景题:A想调用B但不想依赖B该如何做

问题描述

如果c依赖于a和b,ab之间平行,那么a想调用b但是不想依赖于b,怎么做

思路

可以使用接口和依赖注入来解耦模块之间的关系。

代码

1. 定义接口

首先,定义一个接口,其中包含a想要使用的方法。

// 接口定义
public interface BInterface{
	void methodB();
}

2. 实现接口

B模块实现这个接口。

// B模块实现接口
public class B implements BInterface{
	@Override
	public void methodB(){
		// 实现具体的方法逻辑
	}
}

3. A模块不直接依赖B模块

A模块不直接依赖于B,而是通过接口依赖。

// A模块依赖接口
public class A{
	private BInterface b;

	// 通过构造函数注入B模块的实例
	public A(BInterface b){
		this.b = b;
	}

	// A模块使用B模块的方法
	public void methodA(){
		// 调用B模块的方法
		b.methodB();
	}
}

4. 使用依赖注入

在程序的入口或配置中,创建B的实例,并将其注入A。

public class Main{
	public static void main(String[] args){
		// 创建B的实例
		BInterface b = new B();
		
		// 创建A的实例,并注入B
		A a = new A(b);

		// 在A中调用B的方法
		a.methodA();
	}
}

通过这种方式,A模块不直接依赖于B模块,而是通过接口依赖,这有助于减少模块之间的耦合。这种设计模式通常称为依赖注入,它使得代码更加灵活,易于测试,并支持替换不同的实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值