我必须用Ruby模拟一个15-puzzle游戏板。 作为一种表示,我选择使用具有行和列的多维数组(作为经典的2x2矩阵)。
我的问题是:为了在Array
中存储所有相关信息,或者更好地创建一个新类,并在内部使用实例变量来保留self
是否更好?跟踪multidim数组?
API在两种情况下都是相同的,我的问题是关于实现。
答案 0 :(得分:2)
您的类不是数组,因此不要将其子类化。它可能是用数组实现的,但它不是一个。
子类化会违反LSP(Liskov Substitution Principle)。
答案 1 :(得分:0)
如果您在不同的OOD模式上探索更多内容,您会发现最常见的建议之一是支持合成而不是继承。对于高度分层的数据结构,继承可能没什么问题。但在大多数情况下,您只会引入额外的依赖项。