gpt4 book ai didi

java - 我可以使用什么设计模式来创建实现特定接口(interface)或可用接口(interface)中的多个接口(interface)或任意组合的对象?

转载 作者:行者123 更新时间:2023-12-01 18:01:37 27 4
gpt4 key购买 nike

我可以使用什么设计模式来创建实现特定接口(interface)或可用接口(interface)的多个或任意组合的对象?例如说我有以下内容

interface A {
void foo();
}

interface B {
void bar();
}

interface C {
void car();
}

class Agent {

}

我希望能够给我实现接口(interface) A 的 Agent 类对象?

我希望能够给我实现接口(interface) B 的 Agent 类对象?

我希望能够给我实现接口(interface) C 的 Agent 类对象?

我希望能够给我实现接口(interface) A、B 的 Agent 类对象?

我希望能够给我实现接口(interface) B、C 的 Agent 类对象?

我希望能够给我实现接口(interface) A、C 的 Agent 类对象?

我希望能够给我实现接口(interface) A、B、C 的 Agent 类对象?

总的来说,我正在寻找的是创建一个可以具有任意接口(interface)组合的功能的对象。

最佳答案

Java 是一种静态类型语言(有关详细信息,请参阅 this 问题)。这意味着您描述的变量具有包含一组已实现的接口(interface)的类型。因此,说您希望某个类的对象改变它实现的接口(interface)并没有多大意义。

话虽如此,我怀疑您正在尝试将 interface 用于一些不该做的事情。例如,如果您想要一个类,其对象可以具有在创建对象时确定的各种功能,那么有些设计模式可能适合您。

在不了解您的需求的情况下,很难提出具体细节,但这里有一个可能的模型:

interface A {
void foo();
}

interface B {
void bar();
}

class Agent {
private Optional<A> delegateA = Optional.empty();
private Optional<B> delegateB = Optional.empty();

public void addA(A delegate) {
delegateA = Optional.of(delegate);
}

public boolean implementsA() {
return delegateA.isPresent();
}

public void foo() {
delegateA.ifPresent(A::foo);
}
}

Agent agent = new Agent();
agent.addA(() -> System.out.println("foo"));
agent.implementsA();
agent.foo();

关于java - 我可以使用什么设计模式来创建实现特定接口(interface)或可用接口(interface)中的多个接口(interface)或任意组合的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40520847/

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