Взлом шаблона проектирования ModelViewController

Введение

Шаблоны проектирования, которые будут рассмотрены в этой статье:

  • Модель-представление-контроллер

Модель-представление-контроллер

Шаблон MVC просто разбит на 3 основные части:

  1. Модель — модели хранят данные приложения (обычно в виде структур или простых классов).
  2. Представление — представления взаимодействуют со своим контроллером через IBActions.
  3. Контроллер представления — Контроллеры координируют между моделями и представлениями

Важно отметить

  • Модели и представления не должны содержать строгие ссылки на свой собственный контроллер, потому что это вызовет цикл сохранения.
  • Используйте шаблон проектирования MVC в качестве отправной точки и будьте открыты для реализации других шаблонов при создании приложения.

Код

  • При реализации шаблона проектирования MVC удобно организовывать файлы пакета приложений с помощью каталогов модели, представления и контроллера.

Модель

  • Я создал простую структуру, представляющую одного программиста.

Вид

  • Я создал IBOutlet для каждого из свойств, которые у меня есть в модели Programmer.

  • Я установил класс элемента UIView по умолчанию для представления, которое я настроил программно (ProgrammerView).
  • Я перетащил 3 UITextField из нашей библиотеки объектов и поместил их в UIView.
  • Идите вперед и соедините 3 UITextFields с IBOutlets, используя инспектор соединений UIView.
  • Обязательно установите ограничения Auto Layout для элементов пользовательского интерфейса.

Контроллер

  • В вашем основном контроллере представления вы можете хранить сильную ссылку на представление и модель, которой он владеет.

  • Задача контроллера заключается в координации между моделью и представлением → В этом случае контроллер должен обновить свое представление, используя значения из модели.

  • Если программатор установлен после вызова viewDidLoad(), контроллер должен обновить ProgrammerView → Для этого можно использовать didSet.
  • Это пример того, как модель может сообщить контроллеру, что что-то изменилось и что представление нуждается в обновлении.

  • И наоборот, это пример того, как представление может сообщить контроллеру, что что-то изменилось и модель нуждается в обновлении.
  • Я подключил IBAction ко всем трем текстовым полям в Main.storyboard.

  • Чтобы увидеть, как IBAction работает с UITextField, я связал каждое из текстовых полей с одним и тем же IBAction с помощью события Editing Changed.

Предостережения

1. Не каждый объект подходит под категорию модели, представления или контроллера.

2. Остерегайтесь «Massive-View-Controller» или контроллеров представлений, которые становятся слишком большими

3. Не стесняйтесь использовать другие шаблоны проектирования поверх MVC

Заключение

Если вы еще этого не сделали, присоединяйтесь к моему серверу Discord! Я хочу создать сообщество разработчиков, чтобы мы могли укреплять, мотивировать и узнавать друг друга в нашем путешествии по программированию.

Раздор

Если у вас есть какие-либо вопросы или комментарии, пожалуйста, не бойтесь спрашивать или общаться со мной в социальных сетях! Вы также можете отправить мне электронное письмо по адресу [email protected]

ЛинкедИн

Ангеллист

Гитхаб

"Портфолио"