2013-02-24 49 views
0

在Spring中,我有一个控制器,一个提供此控制器可以访问的方法的服务接口。控制器调用服务的各种实现方法。将Spring抽象工厂模式转换为Scala

为了让scala获得相同的'设计分离',这是正确的实现: 定义scala控制器,定义一个scala特征作为服务接口。定义一个扩展此特征并提供服务实现的新类。然后控制器将安装这个新类并调用服务方法的各种方法实现。

这是好的设计还是Spring MVC在实践中的使用方式?

回答

0

正如其他人已经评论说,“好设计”是依赖于其他因素,灵活的概念。我不会加入那个讨论,而是提供我们的方法的概述。

我们从传统的Java & Spring webapp开始,尽管我们选择了Jersey而不是Spring MVC。后来,我们在斯卡拉重新编写了一个很好的文章。我们故意保留了类似Java的风格的Scala--这可能被认为是不起眼的,但它运行良好,很容易培养新的同事。

然后我们决定放弃Spring以及它的XML和传递依赖的整个shebang。这很容易,因为我们已经有一组服务和控制器,都是具有构造器注入依赖关系的类(当然是所有的TDD)。我们所要做的只是编写一个新的Bootstrap类来实例化服务和控制器,并在每个构造函数参数列表中提供必要的具体类。方便起见,Bootstrap类本质上是将原始Spring线路转换为(非常简单)Scala的音译。 Bootstrap类在应用程序启动时从web.xml启动。(这种方法将是熟悉的人谁使用微微集装箱。)

在我们的例子中,我们并不需要用太多的性状在我们的服务层;由TDD驱动的混凝土类的清洁设计就足够了。但是,如果有必要,我们的方法也可以用于可插拔抽象服务。

现在我们有不同的web.xml中没有XML web应用程序,纯粹斯卡拉所以很容易浏览和修改,并用少得多的外部依赖。这对我们非常有效。

0

“好设计”是相当主观的,“好设计”的含义随着时间的推移而变化。大多数人认为最佳实践有几件事,但即使是最佳实践也有冲突。我个人的观点是,程序员应该继续学习这些最佳实践,更重要的是不断塑造他的代码,直到达到最佳状态。然而,这一点,随着程序员不断学习,“最佳”形状不断变化。

我不能告诉你什么“好设计”设计在你的情况下,因为我不知道这种情况。最重要的是,我不是你,所以我的“好设计”不是最适合你的。我建议你在下面几个问题的帮助下自己找到它:

  • 你是谁编程?
  • 你的代码需要多长时间?
  • 谁会维护你的代码?
  • 你想创建自动测试,你是否愿意改变你的设计?
  • 您是否需要单个原则的多个实现?
  • 在这个时候什么风格适合你?
  • 代码多久改变一次?
  • 您是否想将未来考虑进去,还是只创建现在需要的?
  • 你喜欢用什么库?
  • 你想花多少时间?
+0

是的,我同意你的看法,也有跟着出去例如Spring MVC一定的标准,但由于斯卡拉似乎让一些Java设计模式冗余(访问者模式涌现在脑海里)有可能实现MVC的替代/清洁方法在斯卡拉 – 2013-02-24 11:58:23

+1

如果你想看看别人是怎么做的Scala的网络相关的东西,你可以检查出不同的web框架:[什么Scala的网络框架可用(http://stackoverflow.com/questions/1488412/what-斯卡拉,网络架构,是可用) – EECOLOR 2013-02-24 12:18:49