Графические интерфейсы пользователя Java. Тимур Машнин
Чтение книги онлайн.

Читать онлайн книгу Графические интерфейсы пользователя Java - Тимур Машнин страница 26

СКАЧАТЬ потому что оно автоматически получает обновления, как наблюдатель модели.

      Давайте теперь посмотрим на пример MVC.

      Рассмотрим модель SimpleStringModel, которая будет иметь один контроллер и несколько видов.

      В этой модели у нас есть два метода getString и setString.

      В методе setString мы устанавливаем новое значение поля класса и уведомляем всех слушателей модели, вызывая метод интерфейса, который эти слушатели реализуют.

      Соответственно объект модели хранит список своих слушателей.

      Представление здесь – это компонент, расширяющий метку.

      Представление имеет метод setModel, в котором Представление становится слушателем Модели.

      При изменении модели, автоматически вызывается метод setText метки, который изменяет надпись метки.

      Контроллер здесь текстовое поле, в которое пользователь вводит строку текста, и эта строка становится новым значением Модели.

      Этот базовый пример иллюстрирует, как реализуется архитектура MVC.

      Еще одна интересная и очень полезная функция, которую мы получаем, когда используем MVC.

      Предположим, что допустимы не все значения, которые пользователь может ввести в текстовое поле.

      Путем выброса исключения в методе set модели мы можем запретить изменение представления.

      Swing реализация MVC объединяет Controller и View представление.

      На самом деле это не очень сложно сделать.

      Вы просто размещаете функции View представления и Сontroller в одном классе.

      В предыдущем примере у нас было два графических компонента – один для Представления, а второй для Контоллера.

      Здесь у нас один графический компонент, который при взаимодействии с пользователем меняет модель.

      При этом этот же компонент становится слушателем модели, перерисовывая себя при изменении модели.

      Давайте посмотрим, как реализована архитектура MVC в Swing на примере списка.

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

      Во-первых, этот интерфейс легковесный, так как в нем нет ссылки на сам список.

      Во-вторых, этот интерфейс присоединяет слушателя модели, как задумано в MVC.

      И есть способ получения данных модели, с помощью методов size/get, что гораздо лучше, чем использование метода, например, возвращающего массив данных, так как при использовании методов size/get не занимается память под массив данных, не происходит копирование данных.

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

      Часто бывает, что данные, которые предоставляются пользователю, меняются, и экран необходимо обновлять.

      Так как модель данных ListModel, как и все СКАЧАТЬ