Java 静态接口法
我有这样的设计模式:Java 静态接口法,java,android,Java,Android,我有这样的设计模式: interface IDriver { String getName(); } class DriverX implements IDriver { @Override public String getName() { return "X"; } } class DriverY implements IDriver { @Override public String getName() { return "Y"; } } class D
interface IDriver {
String getName();
}
class DriverX implements IDriver {
@Override
public String getName() { return "X"; }
}
class DriverY implements IDriver {
@Override
public String getName() { return "Y"; }
}
class DriverFactory {
public IDriver getDriverByName(String name) {
if (name.equals("X")) {
return new DriverX();
}
if (name.equals("Y")) {
return new DriverY();
}
}
}
我现在想要的是,列出一个驱动程序名列表,而不必对它们进行实例化。Java8允许我使用静态
接口方法,但Java7不允许。我不能使用Java 8,因为我的Android目标低于API 24
有没有一种方法不必实例化驱动程序就可以做到这一点?您可以在类中放置静态final字段。然后你会有
if(name.equals(DriverX.name))…
@khelwood这是惯例还是在接口中?你的方法都缺少返回类型。即使在Java 8中,接口上的静态方法也不是接口关于实现类的规范的一部分;这只是一个属于接口的静态方法。您可能想考虑使用枚举而不是孤立子类。至少对于这个过于简单的例子来说,这是有道理的。随着类复杂性的增加,它变得越来越不实用。