java两个类之间的耦合关系怎么写_java – oop:理解依赖关系和类之间的耦合

究竟是什么意思,一个班级对另一个人的了解太多了?

class AAA {

public void method1() {

//do something

method2();

}

public void method2();

// do something

}

}

class BBB {

private AAA ref = new AAA();

public void start() {

while(true) {

if (something) {

ref.method1();

}

}

}

}

class Main {

public static void main(String[] args) {

BBB ref = new BBB();

ref.start();

}

}

在文件中它说

>主要课程取决于BBB

> BBB取决于AAA

提出的问题是

> BBB需要依赖AAA吗?

> BBB是否可以在新环境中重复使用?

关于2. – 是吗?如果没有,为什么不呢?为什么依赖于AAA会阻止它在新的上下文中使用?这里的语境是否意味着“有不同的阶级”?

它说虽然BBB需要调用method1(),但它不需要知道该方法的作用.因此,您应该通过使用AAA的接口/抽象类而不是AAA本身来削弱依赖性(松散耦合)

新的:

class AAA extends AbstractAAA {

// same

}

class BBB {

AbstractAAA ref;

public BBB (AbstractAAA param) {

this.ref = param;

}

public void start() {

while(true) {

if (something) {

ref.method1();

}

}

}

}

class Main {

BBB ref = new BBB(new AAA());

ref.start();

}

现在它说main仍然依赖于BBB,它取决于AAA的构造函数,但BBB不受AAA的实现细节的影响.

依赖意味着最广泛意义上的“使用一个实例”,所以我看到主要依赖于BBB,而AAA和BBB以前依赖于AAA而现在依赖于抽象类,这是一个较弱的依赖.

我没有得到的问题是依赖关系和实现细节究竟是什么问题,如果另一个类发生了变化则不得不改变.我认为最好使用接口和抽象类作为方法和构造函数的参数,因为你可以传递任何类扩展/实现类/接口.

但有实施细节的事情.当我有一个类的引用(并创建一个依赖项)并调用一个公共方法时,我如何依赖于实现细节?仅仅因为我称这种方法并不意味着我知道它内部发生了什么……?

我在这里看了其他的例子,但我还是没有真正得到它……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值