设计模式 – 单一责任原则 – 棋盘件

将单一责任原则应用于棋盘应用程序,Piece接口/类应该负责什么?

我确信它需要知道它的颜色,类型和有效的移动.但它是否也应该知道它在董事会中的位置(x / y)?或者,董事会应该知道每件作品的位置.

这个决定也会对作品如何移动产生一些影响,董事会是否决定一件作品的有效举动等等

最佳答案 你认为你可能想让PieceOnBoard成为与Piece不同的实体是正确的.

有几种方法可以做到这一点 – 但一般来说,你想要将一般情况下适用于Rook的方面分开,比如说,从一个特定的白嘴鸦中分离,因为它参与了特定的国际象棋游戏.

你可以让Piece成为一个接口来确定给定PieceOnBoad和BoardPosition的有效移动 – 它可以具有特定于不同种类棋子的实现. “Rook”这个类的实现将对应于“Rook in General”.

PieceOnBoard将是Piece,Color和BoardPosition的组合. PieceOnBoard的特定实例将对应于参与特定国际象棋游戏的特定车辆.

然后BoardPosition可能只是PieceOnBoard对象的集合.

点赞