ウィザード形式の画像処理ソフトウェアを構築しています。GUI、Engine、Core_Algorithms の 3 つのレイヤーで構成されています。
ウィザード:アプリの各「パネル」は、ユーザーに何かをするように求めます。例: 最初のパネルはユーザーにいくつかの画像をロードするように求め、次のパネルは「シード領域成長」(SRG) アルゴリズムを適用し、「魔法の杖ツール」を使用して結果を調整するようにユーザーに求めます。
舞台裏で何が起こっているか:すべてのアルゴリズムはパッケージ「コア」に保持されています (そして、GUI から完全に独立しています)。すべてのデータ項目 (アプリ全体) は、単一のクラス ( Data.java ) に格納されます。
データ.java
/*Stores ALL the necessary data items*/
public class Data{
BufferedImage sourceImage, targetImage;
BufferedImage srcGrownImg;
Point srcPoint, tarPoint;//and many more data items for each algorithm and panel
}
別のクラス ( Data.javaから拡張された Engine.java ) は、これらのデータ項目を使用し、適切なアルゴリズム (「コア」パッケージの SRG.java など) を実行し、項目を (Data.java 内に) 格納します。ウィザードの各フェーズには「Engine.java」の同じインスタンスがあるため、アルゴリズムを設定して実行し、結果を取得できます。
エンジン.java
/*Runs algorithms inside "core"*/
public class Engine extends Data{
public growSource()
{
SRG srgObj = new SRG(srcImg, srcSeeds);
srcGrownImg = srgObj.runAndGetResult();
}//and many more functions for each panel
}
問題:私たちが抱えている問題は、「Data.java」と「Engine.java」が長すぎることです。Engine.java は短くてわかりやすい関数 (3 ~ 4 行) で構成されています (ただし、ウィザード全体で使用される関数はすべてその中に格納されているため、非常に長くなります)。
質問: "Data.java" と "Engine.java" が短くなるように、コードを分割する方法についてアドバイスが欲しいです。