我正在使用一個大的開源庫,需要生成一些類的個人子類。什麼是最好的策略?我希望保持原始庫不變,並且在更新時能夠輕鬆地重新配置。我的代碼不太可能對項目有所貢獻(儘管我很樂意以允許這種方式寫作)。繼承開源庫
該問題是一個普遍的問題,但我會用我的例子來說明。我正在使用Apache PDFBox,它有一個例程寫入java.awt.Graphics2D
。我用Apache Batik工具包替代了這個工具包,它提供了Graphics2D的一個子類(org.apache.batik.svggen.SVGGraphics2D
),所以我可以捕獲SVG表示。我創建一個實例
public static org.apache.batik.svggen.SVGGraphics2D createSVG() {
org.w3c.dom.DOMImplementation domImpl =
org.apache.batik.dom.GenericDOMImplementation.getDOMImplementation();
org.w3c.dom.Document document =
domImpl.createDocument("http://www.w3.org/2000/svg", "svg", null);
return new org.apache.batik.svggen.SVGGraphics2D(document);
}
其中PDFBox的使用圖形的地方是org.apache.pdfbox.PDFReader
我所編輯,使新的圖形:
protected void showPage(int pageNumber)
{
try
{
PageDrawer drawer = new PageDrawer();
PageWrapper wrapper = new PageWrapper(this);
PDPage page = (PDPage)pages.get(pageNumber);
wrapper.displayPage(page);
PDRectangle cropBox = page.findCropBox();
Dimension drawDimension = cropBox.createDimension();
svg = PDFPagePanel.createSVG(); // MY EDIT!!!!!!!!!
drawer.drawPage(svg, page, drawDimension);
writeSVG(pageNumber);
}
catch (IOException exception)
{
exception.printStackTrace();
}
}
我已經得到它的工作(這不是問題) 。我擔心的是,我必須破解/編輯並重新編譯一些分佈式PDFBox類,只是爲了生成和使用子類。我最終在類庫中找到類似PMRPDFReader的類。這是非常混亂的 - 我不能立即記住我編輯的地方等。
我覺得我應該可以按原樣使用該庫,並簡單地添加/鏈接我的子類。我使用maven,所以也許有一種排除原始類的方法。
+1有用的建議 – 2012-04-25 09:43:09