给定 OOP 语言中的一组元组类:Pair、Triple 和 Quad,Triple 应该是 Pair 的子类,Quad 是 Triple 的子类吗?
在我看来,问题在于 Triple 是否可以替代为 Pair,Quad 也可以替代 Triple 或 Pair。Triple是否也是一对,Quad是否也是Triple 和 Pair。
在一种情况下,这样的关系可能对可扩展性很有价值——今天这个东西返回一个 Pair of things,明天我需要它返回一个 Triple 而不破坏现有的调用者,他们只使用三个中的前两个。
另一方面,它们应该是不同的类型吗?我可以看到更强类型检查的好处——你不能将 Triple 传递给需要 Pair 的方法。
我倾向于使用继承,但真的很感谢其他人的意见吗?
PS:如果重要的话,课程(当然)将是通用的。
PPS:在更主观的方面,名称应该是 Tuple2、Tuple3 和 Tuple4 吗?
编辑:我认为这些更像是松散耦合的组;不是专门用于 x/yx/y/z 坐标之类的东西,尽管它们可能用于此类。这就像需要一个方法的多个返回值的通用解决方案,但形式具有非常简单的语义。
也就是说,我对其他人实际使用元组的所有方式都很感兴趣。