[英]Java - Calling all methods of a class
我目前正在開發必須呈現多個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類動態調用它們。 這將使其更清潔且更易於擴展。 我當時正在考慮使用諸如反射之類的方法,但這也並不是一種好的解決方案。 關於如何正確實施此想法?
創建一個Renderer
界面。
創建一個包含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
包含呈現所要模板的邏輯。
一旦有了這些,所有的渲染器將實現該方法並具有所需的邏輯。 最后,你可以做沿東西線這以前SO張貼到自動尋找並初始化您的模板類。
為了增強功能,您還可以將以上內容與.properties
文件或數據庫結合使用,以使某些模板無法自動啟用或提供其他初始化參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.