这是一个面试问题。
使用面向对象的原则设计一个tic tac toe。采访者说他对逻辑不感兴趣,他只想要设计。我给出了如下设计,但我并不完全满意。如果有任何建议/改进,请告诉我。
面试官非常关注两件事
我的方法:
课程的粗略草图。
interface Player {
Player takeTurn();
void markNextBox();
}
public class TicTacToeGameEngine implements GameRule{
@Override
public Boolean isWinner(Game game) {
// Check winner logic
return false;
}
@Override
public Square locateSquareToMark(Game game) {
List<Square> squares= game.getBoard().getFilledSquares();
//go through the list of squares and figure out a square to mark
return square;
}
}
public class Computer implements Player {
GameRule g = new TicTacToeGameEngine();
@Override
public void markNextBox() {
g.locateSquareToMark(game);
}
@Override
public Player takeTurn() {
// TODO Auto-generated method stub
return null;
}
}
public interface GameRule {
Boolean isWinner(Game game);
Square locateSquareToMark(Game game);
}
//人类
的类似实现现在我在这个设计中遇到的困难是
任何缺陷,设计的改进都将受到赞赏。