gpt4 book ai didi

java - 我可以有一个接口(interface)实例吗

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

在我的 Android 应用程序中,我有一个类,它为我提供静态字符串值;像这样的东西:

public class VehicleInfo {

public static String getVehicleEnginePower(boolean isNew) {
return isNew ? "1800CC" : "1600CC";
}
}

现在我有另一个类别,所以我必须传递另一个 boolean 值,然后我将获得我需要的值。然而,这些类别将继续增加。所以我查看了Open/Closed principle这看起来很有希望快速增强。为了确保这一点,我将把 VehicleInfo 类作为接口(interface),然后让其他类实现 VehicleInfo

public interface VehicleInfo {
String getVehicleEnginePower();
}

public class NewVehicle implements VehicleInfo {
@Override
public String getVehicleEnginePower() {
return "1800CC";
}
}

其他类别类也将是这样的。这样我就必须为所有新类别添加另一个类。

我想问的问题是:有没有办法让我拥有这个接口(interface)的单个​​实例?因为在整个应用流程中,用户只能看到一个类别,直到切换到另一个类别。

我不想在多个点实例化这些类。为了澄清我的问题,我想在我的应用程序开始时做这样的事情:

if (isNew) {
VehicleInfo vehicleInfor = new NewVehicle();
}

在整个应用程序中,每当我调用 VehicleInfo.getVehicleEnginePower 时,它应该始终从 NewVehicle 类返回引擎功率。

这样的事情可能吗?或者我只是很傻,我必须在多个点上实例化这个接口(interface)?

最佳答案

也许你需要一个单例

public class VehicleInfoManager {
private static VehicleInfoManager INSTANCE = new VehicleInfoManager();

private VehicleInfo currentVehicleInfo;

public static VehicleInfoManager getInstance() {
return INSTANCE;
}

public void setCurrentVehicleInfo(VehicleInfo info) {
this.currentVehicleInfo = info;
}

public String getVehicleEnginePower() {
return this.currentVehicleInfo.getVehicleEnginePower();
}

private VehicleInfoManager() {
// Constructor private by default
}
}

然后你就可以像这样从任何地方调用它

VehicleInfoManager.getInstance().getVehicleEnginePower()

//Or set current info like this
VehicleInfoManager.getInstance().setCurrentVehicleInfo(new NewVehicle())

请小心,因为 currentVehicleInfo 默认为 null,因此您需要处理空指针情况。

关于java - 我可以有一个接口(interface)实例吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41584725/

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