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

Введение

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

  • Делегация

Делегация

  • Этот шаблон позволяет объекту использовать другой вспомогательный объект:
  1. Предоставить данные

2. Выполняйте задачу, а не саму задачу

  • Шаблон делегирования состоит из 3 частей.
  1. Объект, которому нужен делегат (также известный как делегирующий объект)

2. Протокол делегата, определяющий методы, которые делегат может или должен реализовать. Объект, который может реализовать протокол, подходит для использования в качестве делегата.

3. Делегат (также известный как вспомогательный объект, который реализует протокол делегата)

Когда я должен использовать это?

Вы должны использовать шаблон делегирования, когда хотите разбить большие классы или создать общие повторно используемые компоненты.

Источники данных и делегаты являются примерами, которые следуют шаблону делегирования, поскольку каждый из них включает 1 объект, запрашивающий у другого предоставить данные или сделать что-то для него.

  • Источники данных предоставляют данные — UITableViewDataSource (numberOfRowsInSection, cellForRowAt)
  • Делегаты получают данные — UITableViewDelegate (didSelectRowAt)

Код

RestaurantViewController.swift (делегат)

  • RestaurantViewController — это простой контроллер табличного представления, который имеет только 1 ячейку, помеченную как «Продовольственный магазин». Мы также уведомляем контроллер представления о том, что переход будет выполнен с помощью метода подготовки, и именно здесь мы устанавливаем делегата FruitViewController как RestaurantViewController.
  • Поскольку RestaurantViewController выступает в качестве делегата, RestaurantViewController может соответствовать протоколу делегата (FruitViewControllerDelegate).

FruitViewController.swift (делегирование объекта)

  • FruitViewController — еще один контроллер, отображающий табличное представление, за исключением того, что он настроен немного иначе, чем RestaurantViewController. Вместо прямого наследования класса от UITableViewController мы использовали стандартный контроллер представления и добавили табличное представление из библиотеки объектов непосредственно поверх контроллера представления. Мы позаботились о том, чтобы в качестве делегата представления таблицы и источника данных был выбран FruitViewController, который также можно было настроить в Interface Builder.
  • Что еще более важно, мы создали протокол делегата под названием FruitViewControllerDelegate, в котором любой делегат может реализовать метод FruitViewController протокола.
  • Наконец, я хотел, чтобы метод делегата вызывался при нажатии кнопки «Возврат» на правой панели.

Основная.раскадровка

Главный вывод

  1. Всего шаблон делегирования состоит из 3 частей.
  • Объект делегирования
  • Протокол делегата
  • Делегат

2. Цель этого шаблона — разбить большие классы и создать повторно используемые компоненты.

3. Как правило, Делегаты должны быть слабыми свойствами в большинстве случаев использования.

Заключение

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

Раздор

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

ЛинкедИн

Ангеллист

Гитхаб

"Портфолио"