State Design Pattern
IBoardModel
execute(IBoardStatusVisitor v, …)
state.execute(v, …)
TicTacToeBoard
ABoardState
v.noWinnerCase(…)
ATerminalState
NonTerminalState
Player0Won
Player1Won
DrawGame
v.player0WonCase(…)
v.player1WonCase(…)
v.drawCase(…)