【发布时间】:2014-04-18 04:13:38
【问题描述】:
这是一个处理多重合成的玩具问题:
有两个对象类,代表弹珠和盒子。 Marble 总是包含在 Box 中,并且 Box 有一个类方法来表示当前在其中的弹珠。 Marble 一旦被实例化,就应该能够被传递给任何其他现有的 Box(或者甚至可能是另一个可扩展的对象)。
在 Python 中实现多个“has-a”组合的最佳模式是什么? (我发现了单个 has-a 示例,但没有偶然发现多个组合示例)。
我的第一个猜测,不管它值多少钱,是通过 Box 类中包含的方法(例如 create_marble、pass_marble、delete_marble 方法)处理 Marble 对象,并在 Box 类中维护一个 Marbles 列表作为属性。但这真的是最好的方法吗?
【问题讨论】:
-
“但这真的是最好的方法吗?”是的。
-
好的。那么 Box 应该有一个传递大理石处理方法的超类吗? (这样如果我定义其他包含对象,例如 Bin,我就可以保持干燥......)
-
保持模糊。
class MarbleContainingObject:)
标签: python instantiation composition