Създавам MVC базирано java приложение/игра и се опитвам да използвам 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 getter, за да получите View
и Model
, необходими на борда.
Аз правя нещо подобно:
PlayerFactory pFactory = new PlayerFactory();
Player player = pFactory.build("HUMAN");
BoardFactory bFactory = new BoardFactory();
Board board = bFactory.build(player);
Притесненията ми са за класа "wrapper" 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