定义模块中的类

时间:2011-05-26 15:18:26

标签: ruby oop

module Vehicle
  class Car < Wheeled
  end
end

module Vehicle
  class Bike < Wheeled
  end
end

这种创建类的模式试图实现的是我无法理解的。通过在其他类中包含Vehicle作为模块来实现此目的的缺点是什么?

2 个答案:

答案 0 :(得分:1)

这样做可以将这些类命名为Vehicle模块:

Car.new
# => NameError: uninitialized constant Object::Car
Vehicle::Car.new
# => #<Vehicle::Car:0x0000123456>

这样,你也可以在模块之外有一个单独的Car类,Vehicle::Car类不会干扰。

答案 1 :(得分:0)

此模式组以某种方式将类关联到单独的命名空间中,以实现更多逻辑应用程序结构并避免命名冲突。超类 - 子类是非常不同的,虽然在你的特定例子中,这样做会更好,因为Car和Bike都是一种车辆,但是在不是这种情况下有很多情况。例如,在单个模块中对所有应用程序类进行分组被广泛使用。