单一责任原则 - 棋盘片

时间:2016-03-24 19:50:15

标签: design-patterns chess single-responsibility-principle

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

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

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

1 个答案:

答案 0 :(得分:2)

你认为你可能想让PieceOnBoard成为与Piece不同的实体,这是正确的。

有几种方法可以做到这一点 - 但一般来说,你想要将一般情况下适用于一般情况的方面分开,例如,来自特定的白嘴鸦,因为它参与特定的国际象棋游戏。

你可以让Piece成为一个界面来确定给定PieceOnBoad和BoardPosition的有效移动 - 它可以具有特定于不同种类棋子的实现。本课程的实施适用于" Rook"对应于" Rook in General"。

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

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