gpt4 book ai didi

java - 多个类实现相同接口(interface)的问题

转载 作者:行者123 更新时间:2023-12-04 07:15:09 25 4
gpt4 key购买 nike

我无法理解多个类何时实现相同的接口(interface),在我使用具体类作为 DI 之前,但在搜索和阅读之后,我被告知它应该取决于抽象。所以这是我的问题:

interface SomeInterface{
public void doSomething();
}
我们有两个实现接口(interface)的类:
class FirstClass implements SomeInterface{

@Override
public void doSomething(){
System.out.print("First class is doing something");
}
}

class SecondClass implements SomeInterface {

@Override
public void doSomething() {
System.out.print("Second class is doing something");
}
}
现在我有一个客户,我想使用第一类和第二类的方法:
class ClientClass {
private SomeInterface someInterface;

public ClientClass(SomeInterface someInterface) {
this.someInterface = someInterface;
}

public void testMethod() {
this.someInterface.doSomething();
}
}
现在,当我实例化客户端类时,我只能在第一个或第二个构造函数中传递一个类,并且该方法将启动,但是如果我想要两种方法怎么办?这个设计有什么问题?

最佳答案

您可以使用这两种方法,但不能同时使用(除非您构建另一个允许您进行复合实现的实现)。
例如,您可以有不同的 ClientClass 实例。使用 SomeInterface 的不同实现:

ClientClass clA = new ClientClass(new FirstClass());
ClientClass clB = new ClientClass(new SecondClass());
现在你有两个对象, clAclB ,它们具有相同的类型,但行为不同,因为它们包含 SomeInterface 的不同实例.
当你在图片中添加DI(依赖注入(inject))时,你可以编写使 ClientClass的代码以它不知道 FirstClass 的方式的实例或 SecondClass ,这使您可以使客户端实现独立于 SomeInterface等级制度。

关于java - 多个类实现相同接口(interface)的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68807908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com