晚上好類,確定哪些是延長一個抽象類
我做的http://wiki2xhtml.sourceforge.net/一個大規模的重構,最終得到更好的概況和可維護性。 (我開始這個項目時,我決定開始編程,所以–你得到它吧;))
此刻我不知道如何解決現在我將說明問題:
每個文件將通過幾種解析器放(如一個鏈接,一個表格,一個用於圖像等):
public class WikiLinks extends WikiTask { ... }
public class WikiTables extends WikiTask { ... }
的文件將被解析這個辦法:
public class WikiFile {
...
public void parse() {
//Run all parsers on this file.
if (!parse) return;
WikiTask task = new WikiLinks();
do {
task.parse(this);
} while ((task = task.nextTask()) != null);
}
}
有時候我可能根本不想使用解析器(僅用於需要複製的文件),或者只選擇一個(例如,用於測試目的)。所以在運行task.parse()之前,我需要檢查這個特定的解析器是否真的是必需的。 (也許通過黑名單或白名單。)
你會建議什麼比較?每個WikiTask的ID(如何操作?)?比較任務對象本身與WikiTask的新實例(開銷)?
是的,根本不解析已經工作。只運行某些分析程序還沒有。 - 對不起,我上面描述的parse()函數不是WikiTask的一部分,而是File對象的一部分。只要有下一個解析器(我使用
task.nextTask()
,因爲順序很重要),在WikiFile對象上調用parse()將運行所有可用的解析器。 - 使用枚舉來識別解析器可能確實是最簡單的方法,因爲它們也是輕量級的。 – 2010-05-07 07:21:45