将单一责任原则应用于棋盘应用程序,Piece接口/类应该负责什么?
我确信它需要知道它的颜色,类型和有效动作。但它是否也应该知道它在董事会中的位置(x / y)?或者,如果董事会知道每件作品的位置。
这个决定也会对作品如何移动产生一些影响,董事会是否决定一件作品的有效举动等等
答案 0 :(得分:2)
你认为你可能想让PieceOnBoard成为与Piece不同的实体,这是正确的。
有几种方法可以做到这一点 - 但一般来说,你想要将一般情况下适用于一般情况的方面分开,例如,来自特定的白嘴鸦,因为它参与特定的国际象棋游戏。
你可以让Piece成为一个界面来确定给定PieceOnBoad和BoardPosition的有效移动 - 它可以具有特定于不同种类棋子的实现。本课程的实施适用于" Rook"对应于" Rook in General"。
PieceOnBoard将是Piece,Color和BoardPosition的复合体。 PieceOnBoard的特定实例将对应于参与特定国际象棋游戏的特定车辆。
然后BoardPosition可能只是PieceOnBoard对象的集合。