Взлом шаблона проектирования делегирования
Введение
Шаблоны проектирования, которые будут рассмотрены в этой статье:
- Делегация
Делегация
- Этот шаблон позволяет объекту использовать другой вспомогательный объект:
- Предоставить данные
2. Выполняйте задачу, а не саму задачу
- Шаблон делегирования состоит из 3 частей.
- Объект, которому нужен делегат (также известный как делегирующий объект)
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 протокола.
- Наконец, я хотел, чтобы метод делегата вызывался при нажатии кнопки «Возврат» на правой панели.
Основная.раскадровка
Главный вывод
- Всего шаблон делегирования состоит из 3 частей.
- Объект делегирования
- Протокол делегата
- Делегат
2. Цель этого шаблона — разбить большие классы и создать повторно используемые компоненты.
3. Как правило, Делегаты должны быть слабыми свойствами в большинстве случаев использования.
Заключение
Если вы еще этого не сделали, присоединяйтесь к моему серверу Discord! Я хочу создать сообщество разработчиков, чтобы мы могли укреплять, мотивировать и узнавать друг друга в нашем путешествии по программированию.
Если у вас есть какие-либо вопросы или комментарии, пожалуйста, не бойтесь спрашивать или общаться со мной в социальных сетях! Вы также можете отправить мне электронное письмо по адресу [email protected]
"Портфолио"