Прежде всего, я хочу сказать, что я много искал, но я нашел много разных решений для inte rnet, которые противоречат друг другу.
Чтобы упростить мой вопрос, я буду использовать пример. Допустим, я хочу создать карту для 2D-игры, используя шаблон проектирования MVC:
MapView. java
public class MapView extends TheViewComponent {
public MapView() {
// Create the view
}
}
MapController . java
public class MapController {
// …
public MapController(Map map, MapView mapView) {
this.map = map;
this.mapView = mapView;
}
}
Карта. java
public class Map {
public void generate() {
// Should create tiles in my MapView.
}
}
Main. java
public class Main {
public Main() {
Map map = new Map();
MapView mapView = new MapView();
MapController mapController = new MapController(map, mapView);
}
}
В методе generate()
(Map. java) я не понимаю, как я могу обновить представление. В моем классе Map у меня нет ссылки на контроллер или представление.
- Должен ли я передать представление модели с
new Map(mapView)
? (кажется странным ...) - Должен ли я генерировать карту в контроллере? Но если это правда, скажем, если у меня есть список плиток в моем
Map.java
, и скажем для примера, что у меня есть операции, которые нужно выполнять в Tile и TileView (как моя карта). Я хочу сохранить ArrayList<Tile>
, а не ArrayList<TileController>
... Так что это второе решение тоже кажется странным ...