gpt4 book ai didi

java - 如何通过类类型委托(delegate)构造函数的实例化?

转载 作者:搜寻专家 更新时间:2023-11-01 01:42:24 24 4
gpt4 key购买 nike

我有几个扩展 BaseClass 的类。现在我想在 DelegatorContext 中静态定义一个 Activity 类,并且每个对象的创建都应该基于 Activity 上下文。

例子:

class BaseClass {
String firstname, lastname;
}

class FirstClas extends BaseClass {}
class SndClass extends BaseClass {}

class DelegatorContext {
public static BaseClass activeClass;
}

class Delegator {
BaseClass create(String firstname, String lastname) {
return DelegatorContext.activeClass instanceof FirstClass
? new FirstClass(firstname, lastname) : new SndClass(firstname, lastname);
}
}

如果引入更多实体扩展 BaseClass,该示例将获得更多样板。

有没有更好的模式来解决我的问题?甚至可能使用 Java8 和 Functions?还是泛型?

我正在使用这个构造来能够在运行时切换实现...

最佳答案

我猜,你的意思是这样的:

interface BaseClassFactory {
BaseClass create(String firstname, String lastname);
}
class DelegatorContext {
public static BaseClassFactory active;
}

DelegatorContext.active=FirstClass::new;

DelegatorContext.active=SndClass::new;

这要求所有的子类都有一个具有相同签名的构造函数,匹配工厂接口(interface)的签名(有趣的是给了一个例子 this recent question )

你真的不需要其他工厂类,但为了完整起见,它将是:

class Delegator {
BaseClass create(String firstname, String lastname) {
return DelegatorContext.active.create(firstname, lastname);
}
}

关于java - 如何通过类类型委托(delegate)构造函数的实例化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29408151/

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