首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向导型图像处理应用程序体系结构

向导型图像处理应用程序体系结构
EN

Stack Overflow用户
提问于 2012-08-13 03:19:23
回答 1查看 110关注 0票数 0

我们正在构建一个向导式的图像处理软件。它由三层组成: GUI、Engine和Core_Algorithms。

向导:应用程序的每个“面板”都要求用户做一些事情。示例:第一个面板要求用户加载一些图像,下一个面板应用“种子区域增长”算法(SRG),并要求用户使用“魔杖工具”来调整结果。

场景背后发生的事情:所有算法都保存在包“核心”中(并且完全独立于GUI)。所有数据项(对于整个应用程序)都存储在单个类中(Data.java)。

Data.java

代码语言:javascript
复制
/*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
}

另一个类(Engine.java,是从Data.java扩展而来的,它使用这些数据项,运行适当的算法(如“核心”包中的SRG.java )并存储这些项(在Data.java中)。向导的每个阶段都有相同的"Engine.java“实例,因此它们可以设置、运行算法并获得结果。

Engine.java

代码语言:javascript
复制
/*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”变得更短。

EN

回答 1

Stack Overflow用户

发布于 2012-08-13 04:20:47

您可以应用http://en.wikipedia.org/wiki/Adapter_pattern来唤起公共接口(如runAndGetResult() )的不同实现。其结果是有尽可能多的具体实现来实现runAndGetResult()

这个示例说明了单个抽象函数eval()的模式,但是可以实现多个接口。类文字用作运行时类型令牌,以按名称获得实现,但也可以使用注册表。

在GUI中,适配器可能扩展AbstractAction以用于按钮、菜单项和其他接受Action的组件。对于脱机处理,适配器列表可以在GUI中组成,然后在另一个线程中按规定的顺序进行评估。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11927804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档