1

我来自基于无状态服务的系统很流行的 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)模块而不是类

在这种情况下,哪一个更可取?

4

2 回答 2

1

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

于 2013-03-05T20:40:23.863 回答
-1

Java 领域中有很多模式没有映射到像 ruby​​ 这样的动态语言。尽管有一整本关于 ruby​​ 中的设计模式的书(http://www.amazon.com/Design-Patterns-Ruby-Russ-Olsen/dp/0321490452),但其中大部分都没用。

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

在 ruby​​ 领域,您可能会使用 rails 来做这些事情,因为它对构建 RESTfull 应用程序和 JSON api 有很好的支持。

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

于 2013-03-05T20:11:01.770 回答