我们正在构建一个向导式的图像处理软件。它由三层组成:GUI、引擎和 Core_Algorithms。
向导:应用程序的每个“面板”都要求用户做某事。示例:第一个面板要求用户加载一些图像,下一个面板应用“种子区域增长”(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)使用这些数据项,运行适当的算法(如“core”包中的 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”变得更短。