4

我是新的 Ruby,但多年来一直是 .net 开发人员。我想在我的几个模型中实现组合,以确保它们尽可能松散耦合,但不知道从哪里开始,或者如果真的需要这样做,我仍然想像.net 开发人员一样。

谁能给我一些关于从哪里开始的指示。

干杯科林 G

4

2 回答 2

8

你的意思是这种东西吗?

类引擎
    attr_reader:马力,:升
结尾

类齿轮箱
    attr_reader:制造商,:model_no
结尾

类车
    定义初始化(发动机,变速箱)
        如果 !engine.kind_of(Engine) 引发“无效的引擎对象”
        如果 !gearbox.kind_of(Gearbox) 引发“无效的齿轮箱对象”
        @engine = 引擎
        @gearbox = 变速箱
    结尾
结尾


car = Car.new(Engine.new, Gearbox.new)
于 2010-05-27T11:45:52.957 回答
2

Ruby 是一种面向对象但动态类型的语言。作为一种动态语言,rubyist 比 .net 开发人员更倾向于使用反射和动态修改代码。当然,因为它是一种面向对象的语言,所以您可以使用与 .net 中基本相同的原则,而且您也应该这样做,但始终环顾四周,看看如何以更动态的方式实现相同的东西。

例如,ActiveRecord ORM 使用composed_of方法解决组合问题,该方法将动态地将适当的字段和属性添加到您的类中。我并不是说这是应该这样做的方式(例如 DataMapper,它是 ruby​​ 的另一个 ORM,选择更“保守”的方法,因此更像 (Fluent)NHibernate),它只是一个示例如何以不同的方式完成事情。

AOP 或 DI 之类的东西对于动态语言来说并不是一个陌生的概念,它们通常只是以另一种方式完成。对语言的动态方面保持开放的态度,但不要过度。

于 2010-05-26T21:52:35.243 回答