我正在用Java开发一个国际象棋程序并考虑以下问题:
然而,
我不能想到建立这种关系的干净解决方案,我已经考虑了一些,但它们都没有兼容良好的面向对象设计和代码高效.
Java不支持多重继承,因此Queen无法借用Rook和Bishop的实现
如果Rook和Bishop扩展了Queen,我需要将每种运动的逻辑提取到单独的方法中,这将严重影响我目前的设计如何验证运动.
以上解决方案似乎都不够优雅,只能击败:
我知道解决方案3违反了良好的Java设计,但在这种情况下,该设计模式似乎只是强制臃肿,不优雅的解决方案.
可能通过对程序进行全面重组可以避免这种情况,但到目前为止,一切看起来都非常有效,优秀的OO设计是否总是以功能和结构的直接性为代价?我的方法对于语言的风格是错误的吗?
你会如何解决这个问题?