【发布时间】:2020-04-28 18:59:25
【问题描述】:
首先我想说的是,我搜索了很多,但是我在互联网上发现了很多相互矛盾的不同解决方案。
为了简化我的问题,我将使用一个示例。假设我想使用 MVC 设计模式为 2D 游戏生成地图:
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;
}
}
Map.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>...所以第二个解决方案似乎也很奇怪...
【问题讨论】:
标签: java model-view-controller