我必须用 Ruby 建模一个 15 拼图游戏板。作为表示,我选择使用具有行和列的多维数组(作为经典的 2x2 矩阵)。
我的问题是:Array
为了将所有相关信息存储在里面,最好是子类化,self
还是创建一个新类更好,并在内部使用实例变量来跟踪 multidim 数组?
API 在这两种情况下都是相同的,我的问题是关于实现的。
你的类不会是一个数组,所以不要子类化它。它可以用一个数组来实现,但它不是一个。
子类化会违反 LSP(Liskov 替换原则)。
如果您更多地探索不同的 OOD 模式,您会发现最常见的建议之一是支持组合而不是继承。对于高度分层的数据结构,继承可能很好。但在大多数情况下,您只会引入额外的依赖项。