大きなオープンソースライブラリを使用しており、いくつかのクラスの個人的なサブクラスを生成する必要があります。最高の戦略は何ですか?私は元のライブラリを変更せずに維持し、更新時に簡単に再構成できるようにしたいと考えています。私のコードはプロジェクトに寄与する価値があるとは思えませんが(私はこれを許す方法で書くことができます)。オープンソースライブラリのサブクラス化
問題は一般的な問題ですが、私の例で説明します。私はjava.awt.Graphics2D
に書き込むルーチンを持っているApache PDFBoxを使用しています。私はこれをGraphics2D(org.apache.batik.svggen.SVGGraphics2D
)のサブクラスを提供するApache Batikツールキットに置き換えて、SVG表現をキャプチャすることができます。私はそれが動作するようになってきた
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();
}
}
(それは問題ではない):私は
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
インスタンスを作成します。私の関心事は、分散クラスのPDFBoxクラスをハック/編集して再コンパイルしてサブクラスを生成して使用するだけで済むということです。私は、ライブラリと同じパッケージにPMRPDFReaderのようなクラスを作ります。それは非常に面倒です - 編集した場所などはすぐには思い出せません。
ライブラリをそのまま使用してサブクラスを追加/リンクするだけでいいはずです。私はmavenを使うので、元のクラスを除外する方法があるかもしれません。
+1便利な提案 –