我是面向对象程序设计的新手--有很多关于组合和聚合的文章,但是我找不到真正的代码示例,所以我写了一个简单的例子:
class Car
attr_reader :model, :valve
attr_writer :passenger
def initialize(model, valve)
@model = model
@engine = Engine.new(valve)
end
def run
puts "wowowowo"
end
end
class Engine
def initialize(valve)
@valve = valve
end
end
class Passenger
def initialize(name)
@name = name
end
end
p = Passenger.new("Foo")
car = Car.new("9-3 convertible", 4)
car.passenger(p)
以下是做出这些决定的原因:
如果我在这方面有什么问题,请指出,我的代码是好的设计吗?
更新:澄清一下,我认为汽车->引擎是合成的,汽车->乘客是聚合的。
发布于 2020-03-10 17:01:49
组合
当两个实体之间存在组合时,组合对象不能在没有其他实体的情况下存在。组合是强关联,而聚集是弱关联。
Tree -叶是组合.叶子是树的一部分。没有树,叶子就不可能存在。
聚合
当两个实体之间存在组合时,组合对象可以在没有其他实体的情况下存在。
aggregation. - Engine is因为如果汽车停止工作,并且我们从我们的数据库中删除它,引擎将不会被删除,因为它可能仍然有功能。我们可以在另一辆车里用这个引擎。
https://stackoverflow.com/questions/16802285
复制相似问题