Java:使用类作为参数来描述设置

时间:2016-06-08 18:22:14

标签: java

我想不出一个很好的方法来命名这个。基本上我有一个程序,我希望有一个默认的“模式”几乎我猜想应该如何运作。但是我想允许使用它来创建自己的类实现(这就像一个API),并将其用作参数,并使用其中的功能。这是最有效的方法吗?如果您不明白这里的错误描述就是一个例子。

public class SimpleStyle extends AbstractStyle {

    public void personalizedImplementation() {
        // manipulate the program this way
    }

}

然后在方法

public static void do(Class<? extends AbstractSyle> style) {
    // Use reflection in herre to get the implementation and do it
}

是否有更好,更有效的方法来做这样的事情

1 个答案:

答案 0 :(得分:0)

如果您可以避免使用反射,则不应使用反射。与设计良好的接口相比,它的可读性更低,更容易出错。

基本解决方案(我不确定您是否已经考虑过)只是将AbstractStyle的实例传递给您的方法:

public static void doSomething(AbstractStyle style) {
    style.personalizedImplementation();
}

public static void main(String[] args) {
    do(new SimpleStyle());
}

如果你不能使用这种方法 - 这取决于具体的用例 - 你可以定义一个额外的接口来处理AbstractStyle实例的创建:

public interface StyleFactory {
    AbstractStyle createStyle();
}

public class SimpleStyleFactory implements StyleFactory {
    @Override
    public SimpleStyle createStyle() {
        return new SimpleStyle(/* ... */);
    }
}

public static void doSomething(StyleFactory styleFactory) {
    AbstractStyle style = styleFactory.createStyle();
    style.personalizedImplementation();
}

public static void main(String[] args) {
    do(new SimpleStyleFactory());
}

注意: do是一个Java关键字,因此不能用作标识符。我改为使用doSomething