Смотри описание:

1) Рефакторинг после добавления обработки изменения ориентации экрана;

2) В том числе теперь объект Model не пересоздается при каждом изменении
ориентации экрана, а используется постоянно в течение всей игры. Для
этого пришлось добавить некоторые изменения, а именно:
- в интерфейс GameModel были добавлены методы удаления слушателя
(передаваемого в аргументе) для каждого из видов слушателей, добавляемы�
к GameModel ;
- в интерфейс GameView были добавлены методы присоединения и
отсоединения объекта GameModel. По сути нужен был только метод
отсоединения модели. Он нужен был для того, чтобы при сохранении
состояния (перед пересозданием Activity во время смены ориентации
экрана) GameView удалял добавленные во время создания GameView. Метод
присоединения модели был добавлен только для симметричности. Но он все
таки используется в конструкторе GameViewImpl, т.к. код этого метода
дублировал часть кода в конструкторе GameViewImpl;

3) Теперь для представления размера игрового поля используется
единственное целое число (до этого использовался объект Dimension, т.е.
пара целых чисел: строки-столбцы). Так удобнее, т.к. не нужно переводить
из целого числа в Dimension и обратно, ведь количество строк и столбцов
в игровом поле для игры Крестики-Нолики всегда одинакого.

4) создан Layout-файл для альбомной ориентации экрана.