【问题标题】:Should I use a framework?我应该使用框架吗?
【发布时间】:2013-04-27 16:34:12
【问题描述】:

我知道这个问题很模糊,但我会尽量让自己清楚。

我正在启动一个涉及 Swing GUI 的 Java 项目。我想遵循 MVC 模式,并且可以使用框架的一些帮助来组织项目的架构。我正在考虑使用Griffon,但我想其他人可能会这样做。

那么,在以下方面使用框架是否是个好主意:

  • 编程效率:当然会提高...大部分时间。更准确地说,如果项目很小怎么办?还是一个大的?如果我已经非常熟悉 Java 和 Swing 怎么办?如果我不是呢?如果项目必须由对我使用的框架一无所知的人维护怎么办?

  • 学习价值:我会仅仅“学习如何使用框架”,而不是在不同的环境中学习更多关于 Java 和 Swing 的知识吗?

  • 专业价值:公司会更喜欢了解“更多”框架(即使他们可能不是他们打算使用的框架)的开发人员,而不是更了解“传统”方法的开发人员?

我在其他地方发现的信息很少,考虑到这个问题有多大,这令人惊讶。这可能看起来微不足道,但我真的很想知道。

【问题讨论】:

    标签: java swing model-view-controller frameworks griffon


    【解决方案1】:

    当然,我对 Griffon 有偏见,但我会尽量做到客观:

    • Griffon 是一个用于 JVM 的 MVC 框架/平台。的确,选择的编程语言是 Groovy,但是也可以使用许多其他语言,请参阅指南 http://griffon.codehaus.org/guide/latest/guide/tips.html#nonGroovyArtifacts 中的这个示例,它展示了如何编写纯 Java 应用程序。如果您安装特定插件http://artifacts.griffon-framework.org/tags/plugin/polyglot,则可以使用其他选项
    • Griffon 的理念之一是让您的选择保持开放。确实,有时该框架会引导您遵循特定的路径,但它提供了足够的腿部空间,也就是说,您可以让它按照自己的节奏跳舞。例如,编写视图通常遵循 Groovy SwingBuilder DSL(Swing 上的一个微妙抽象层),但如果需要,您可以下拉到 Java 层并使用纯 Java/Swing 编写;或选择 NetBeans Matisse、Abeille Froms Designer 或任何其他支持 Swing 的可视化工具。
    • 插件是 Griffon 成功的关键。正如您在http://artifacts.griffon-framework.org/category/all/plugins 看到的那样,目前有 211 个插件,而且还会有更多。

    但归根结底,只有一种意见很重要:你的。我建议您与 Griffon 一起度过几个小时,如果您到那时还看不到它的附加值……恐怕我们将不得不更加努力地让它变得更好。

    干杯

    【讨论】:

    • 谢谢!然而,我的问题实际上是针对一般框架的——如果我决定使用一个,我认为 Griffon 将是一个不错的选择。我是编写 GUI 的初学者,考虑到我只是遵循标准,我发现从头开始创建 Swing 应用程序是不必要的痛苦。我仍然想编写纯 Java,因为我想学习它。所以我认为一个框架至少可以提供起始架构,甚至可能更多。这就是为什么。
    【解决方案2】:

    我们知道,Griffon 是基于 Groovy 的,而 Groovy 有一个漂亮的 Java 风格,可能你会避免很多代码行,但我们总是需要考虑一些方面,比如知识和进度。

    • 知识:您的生产力与您所知道的以及如何使用您所知道的有关,如果您对 Java 感到满意,请使用 Java,因为,您的目标似乎是使用 MVC,正如 Juned 所说,我们也可以用 Swing 做到这一点。
    • 时间表 : 如果你现在有时间学习并且真的想学习一个新的框架,现在是时候了,但是你必须按照你的时间表,不要忘记你需要完成这个项目时间。

    所以,考虑使用你所知道的,并为其他项目研究新事物。

    避免在没有手电筒的情况下在黑暗中潜水。

    【讨论】:

      【解决方案3】:

      我正在评估 Griffon 作为一个框架。我的印象是这个项目正在慢慢消亡。恕我直言,Groovy 不再是主流(我想知道它是否曾经是主流?)。现在每个人都喜欢 Scala。

      现在回到你的问题:

      • 大多数框架都希望您遵循标准开发路径。任何更改/定制很可能会引入难以维护的解决方案(之后他们将其称为架构)。选择一个允许你完成 95% 的计划的框架。是的,选择一个主流框架。
      • Griffon 基于 Groovy,所以你必须先掌握 Groovy。好的,Groovy 是一种 JVM 语言,如果你对 Java 没问题,它会大有帮助,但所有这些 DSL 仍然需要一些时间来让你在脑海中安定下来。
      • 如果您知道任何主流框架 - 这是一项宝贵的资产。可悲的事实是框架往往会褪色/消亡,您必须不断寻找新的热门事物。您永远不会停止学习(尽管关键原则无法更改,并且在不同框架之间保持不变)

      【讨论】:

      • 感谢您的实际回答。
      • 恐怕现在 Scala 比其他任何东西都更炒作。无论如何,Griffon 也支持 Scala(很快 ScalaFX),所以它和 Scala 一样成为主流(根据你自己的估计)。
      • @aalmiray 来自插件文档:它(scala)将在 griffon-app 或 src/main 上的任何可用源之前首先编译,这意味着您无法从 Scala 代码中引用任何这些源.是的,我不想伤害任何人的感情;)我自己有一个关于 Grails 的项目。
      • @aalmiray 还有一件事。 Griffon 的 Scala 插件最后一次更新是在 2011 年 1 月。
      • @Funtik Scala 插件的最新版本发布于 2013 年 4 月 10 日,事实上artifacts.griffon-framework.org/plugin/scala/releases 你可能已经看过前一页griffon.codehaus.org/Scala+Plugin 那一个,不再活跃
      【解决方案4】:

      如果您理解它,为环境实现 MVC 模式应该很容易。首先说明一下:http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

      现在进入基于 Swing 的环境,您可以通过划分模型-视图-控制器来实现您的代码。视图是您实际创建用户界面的 Swing 类。在这样的类中,您应该通过不同的侦听器简单地捕获用户操作,但不应该实现任何业务逻辑。控制器应该执行业务逻辑,并且可以在需要时使用模型。

      例如,您正在创建一个用于登录的 Swing GUI。创建一个 LoginView 类,您将在其中创建框架、文本字段、按钮等。还可以根据需要将侦听器附加到不同的控件。现在,每当用户提交登录信息时,您都应该调用控制器来进行凭据验证。凭证可以存储在数据库中,该数据库应加载并存储在模型(DAO)中。 Controller 应该从 View 获取用户输入,从 Model 获取正确的凭据,并且比较逻辑应该在 Controller 中实现。

      希望对你有帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多