簡體   English   中英

Java-調用類的所有方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM