module Vehicle
class Car < Wheeled
end
end
module Vehicle
class Bike < Wheeled
end
end
这种创建类的模式试图实现的是我无法理解的。通过在其他类中包含Vehicle
作为模块来实现此目的的缺点是什么?
答案 0 :(得分:1)
这样做可以将这些类命名为Vehicle
模块:
Car.new
# => NameError: uninitialized constant Object::Car
Vehicle::Car.new
# => #<Vehicle::Car:0x0000123456>
这样,你也可以在模块之外有一个单独的Car
类,Vehicle::Car
类不会干扰。
答案 1 :(得分:0)
此模式组以某种方式将类关联到单独的命名空间中,以实现更多逻辑应用程序结构并避免命名冲突。超类 - 子类是非常不同的,虽然在你的特定例子中,这样做会更好,因为Car和Bike都是一种车辆,但是在不是这种情况下有很多情况。例如,在单个模块中对所有应用程序类进行分组被广泛使用。