MVC - связь с моделью - PullRequest
       1

MVC - связь с моделью

0 голосов
/ 28 апреля 2020

Прежде всего, я хочу сказать, что я много искал, но я нашел много разных решений для 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> ... Так что это второе решение тоже кажется странным ...

Ответы [ 2 ]

0 голосов
/ 28 апреля 2020

MVC - это архитектурный шаблон с целью разделения обязанностей

Модель
Это бизнес-уровень (домен и логика c), который не должен иметь каких-либо скажем, как вы собираетесь «просматривать» данные. Например, Модель предоставляет вам объект / список / карту с информацией для отображения.

Подсказка: здесь ваш код не должен полагаться на веб-фреймворки или HTTP-сервлет API

Просмотр
Этот уровень отвечает за отображение данных в пользовательском интерфейсе. : он не должен включать бизнес-правила или безопасность, а только логики представления c

Контроллер
Он находится посередине: он отправляет запрос соответствующей модели и пересылает исход к соответствующему виду

0 голосов
/ 28 апреля 2020

Модель предметной области Map должна содержать только структуру карты и должна делать ее доступной для внешнего мира (например, getTiles()). Затем представление должно использовать эти данные домена для соответствующей визуализации карты.

Для манипулирования контроллер должен предоставить точки входа для соответствующих действий и направить их на сервисный уровень, который, в свою очередь, обновляет модель домена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...