Ruby应用程序中的无状态服务,每次都创建新实例

时间:2013-03-05 19:56:06

标签: ruby service

我来自Java世界,其中基于无状态服务的系统很受欢迎。 在Ruby世界中,它不是那么受欢迎,我找不到任何答案,如何做到这一点。

说我需要CRUD服务来存储订单。它是纯粹的无状态,没有实例变量,只有createread等方法。我想知道每次我想使用它时是否应该创建它的新实例?在使用Spring或Guice的java中,您有一个可以同时使用的实例。

我可以考虑以下方法来实现

1)常规课程,每次都致电OrderRepository.new

  class OrderRepository
    def create(order)
       ..
    end
  end

2)类方法并调用OrderRepository.create(听起来不太好)

  class OrderRepository
    def self.create(order)
       ..
    end
  end

3)模块而不是类

在这种情况下哪个更好?

2 个答案:

答案 0 :(得分:1)

在你的情况下,我会使用类级方法。意见可能会有所不同,但如果您实际上并不需要某个实例,我认为没有任何意义。我也没有看到添加像单身人士这样的宝石,或者如果你不需要一个框架,或者如果一个框架不适合你的目标,我也没有任何意义。

答案 1 :(得分:-1)

java土地中有很多模式没有映射到像ruby这样的动态语言。虽然有一整本关于红宝石(http://www.amazon.com/Design-Patterns-Ruby-Russ-Olsen/dp/0321490452)中的设计模式的书,但大多数都没用。

当您谈论CRUD时,您可能正在讨论可用于管理某些数据库实体的HTTP语言API。

在ruby land中你可能会使用rails来做这些事情,因为它对构建RESTfull应用程序和JSON apis有很大的支持。

所以,请,请不要在ruby中创建DAO或Repository类。没有必要(大多数时候)。