我想不出一个很好的方法来命名这个。基本上我有一个程序,我希望有一个默认的“模式”几乎我猜想应该如何运作。但是我想允许使用它来创建自己的类实现(这就像一个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
}
是否有更好,更有效的方法来做这样的事情
答案 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
。