我应该使用框架吗?

时间:2013-05-03 09:50:00

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

我知道这个问题很模糊,但我会尽力让自己明白。

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

因此,在以下方面使用框架是个好主意:

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

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

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

我在其他地方找不到什么信息,这很令人惊讶,考虑到这个问题有多大。这看起来似乎微不足道,但我实在想知道它。

4 个答案:

答案 0 :(得分:6)

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

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

但最终只有一个重要的意见:你的意见。我建议你和Griffon一起花几个小时,如果你还没看到它增加的价值......我担心我们必须更加努力才能让它变得更好。

干杯

答案 1 :(得分:5)

正如我们所知,Griffon基于Groovy而Groovy有一个漂亮的Java风格,可能你会避免很多代码行,但我们总是需要考虑一些方面,如知识和日程安排。 / p>

  • 知识:您的工作效率与您所知道的以及如何使用您所知道的内容相关,如果您感到难以理解,使用Java,因为您的目标似乎是使用MVC和正如Juned所说,我们也可以用Swing来做到这一点。
  • 日程:如果您有时间学习并且现在真的想学习新框架,现在是时候了,但您必须遵循您的日程安排,不要忘记您需要完成这个项目当时。

因此,请考虑使用您所知道的内容,并将新内容研究到另一个项目中。

  

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

答案 2 :(得分:3)

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

现在回到你的问题:

  • 大多数框架都希望您遵循标准开发路径。任何更改/自定义都很可能会引入难以维护的解决方案(之后他们称之为架构)。选择一个框架,允许您完成95%的计划。是的,选择一个主流框架。
  • Griffon基于Groovy,所以你必须先掌握Groovy。好的,Groovy是一种JVM语言,如果你对Java很好,它会有很大的帮助,但是所有这些DSL都需要一些时间才能解决问题。
  • 如果您了解任何主流框架 - 这是一项宝贵的资产。可悲的事实是,框架往往会褪色/死亡,你必须不断寻找新的嗡嗡声。你永远不会停止学习(虽然关键原则不能改变,并且从框架到框架保持不变)

答案 3 :(得分:2)

如果您了解环境,则应该很容易实现环境的MVC模式。首先是关于它的说明:http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

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

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

希望它有所帮助!