Я создаю Java-приложение/игру на основе MVC и пытаюсь использовать IoC для отделения создания объекта от логики приложения.
Предположим, у меня есть только 2 сущности: Board
и Player
, каждая из которых имеет класс Model
, класс View
и класс Controller
.
BoardModel
нужен PlayerModel
(для обработки некоторой логики приложения), а BoardView
нужен PlayerView
(чтобы отображать его внутри своего пространства).
Чтобы создать новый Player
, я использую класс PlayerFactory
, который создает PlayerModel
, PlayerView
и PlayerController
и соединяет их вместе.
Проблема в том, что после создания Player
мне нужны экземпляры PlayerModel
и PlayerView
для создания Board
.
Мое решение состоит в том, чтобы «обернуть» PlayerModel
, PlayerView
и PlayerController
в класс Player
, который имеет только эти 3 поля и 3 getters
; передайте Player
BoardFactory
и внутри фабрики используйте геттер 3, чтобы получить View
и Model
, необходимые Правлению.
Я делаю что-то вроде этого:
PlayerFactory pFactory = new PlayerFactory();
Player player = pFactory.build("HUMAN");
BoardFactory bFactory = new BoardFactory();
Board board = bFactory.build(player);
Меня беспокоит класс "обертка" Player
. Имеет ли смысл иметь класс только для хранения 3 объектов? Есть ли лучший способ передать зависимости Board
без использования контейнера IoC?
Board
используетPlayerView
,PlayerController
иPlayerModel
? - person CKing   schedule 17.05.2015Board
используетPlayerView
для добавления к своему собственномуView
(для целей рендеринга) и используетPlayerModel
для проверки, например, может ли игрок двигаться в определенной позиции. КлассBoard
сам является оболочкой дляBoardView
,BoardModel
иBoardContoller
. - person user1305336   schedule 17.05.2015Graphic
на видCLI
с моим подходом. Но если вы настаиваете на использовании MVC, вам, возможно, придется перепроектировать свои классы с нуля, поскольку то, как они у вас есть сейчас, потребует от вас использования пустой оболочки, которая ничего не делает. - person CKing   schedule 17.05.2015