子类数组与否?

时间:2013-10-13 16:05:53

标签: ruby arrays subclass

我必须用Ruby模拟一个15-puzzle游戏板。 作为一种表示,我选择使用具有行和列的多维数组(作为经典的2x2矩阵)。

我的问题是:为了在Array中存储所有相关信息,或者更好地创建一个新类,并在内部使用实例变量来保留self是否更好?跟踪multidim数组?

API在两种情况下都是相同的,我的问题是关于实现。

2 个答案:

答案 0 :(得分:2)

您的类不是数组,因此不要将其子类化。它可能是用数组实现的,但它不是一个。

子类化会违反LSP(Liskov Substitution Principle)。

答案 1 :(得分:0)

如果您在不同的OOD模式上探索更多内容,您会发现最常见的建议之一是支持合成而不是继承。对于高度分层的数据结构,继承可能没什么问题。但在大多数情况下,您只会引入额外的依赖项。