我目前正在开发一个必须渲染多个 Freemarker 模板的应用程序。到目前为止,我有一个处理渲染的 Generator 类。这个类看起来或多或少像这样:
public class Generator {
public static void generate(…) {
renderTemplate1();
renderTemplate2();
renderTemplate3();
}
private static void render(…) {
// renders the template
}
private static void renderTemplate1() {
// Create config object for the rendering
// and calls render();
};
private static void renderTemplate1() {
// Create config object for the rendering
// and calls render();
};
…
}
这可行,但感觉不太对劲。我想做的是创建一个包含所有 renderTemplate...() 方法的类,然后从我的 Generator 类动态调用它们。这将使它更干净并且更容易扩展。我正在考虑使用反射之类的东西,但它也不是一个很好的解决方案。 关于如何正确实现这一点有什么想法吗?
最佳答案
创建一个渲染器
接口(interface)。
创建一个包含 Renderer
实现的数组。
遍历数组调用它们。
interface Renderer {
void renderTemplate();
}
static final Render[] renderers = new Render[] {
new Renderer {
public void renderTemplate() {
// Create config object for the rendering of 1
// and calls render();
}
},
new Renderer {
public void renderTemplate() {
// Create config object for the rendering of 2
// and calls render();
}
},
}
public static void generate() {
for (Renderer r: renderers) {
r.renderTemplate();
}
}
如果所有 Renderer
实现共享该方法,您可能需要考虑将 Renderer
设为一个抽象类,并将 Render 方法放入其中。
关于Java - 调用类的所有方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24159156/