Каковы различия между наследованием, делегированием, категорией и шаблоном наблюдателя в Objective-C?
Я новичок в Objective-C и так же в iOS. Я занимаюсь разработкой приложений для Android - и поэтому довольно удобно использовать Inheritance. Но в iOS почти все реализовано с использованием Делегирования. Так что в основном мой вопрос:
- В чем разница между этими четырьмя концепциями и когда их использовать? Каковы плюсы и минусы использования каждого?
Я искал этот вопрос в Stackru, но нигде не смог найти эти концепции вместе.
1 ответ
Наследование
Способ наследования свойства базового класса для подкласса. Все открытые и защищенные члены наследуются подклассу. *Obj-C не имеет закрытых членов, так что это не входит в игру (однако вы создаете их с помощью расширений классов, даже если есть некоторый взлом для доступа к нему).
Делегация:
Способ, которым вы делегируете задачу одного класса другому. Часто используемые класс и делегаты имеют UITableViewDelegate
, Это всегда 1 к 1. Обратный вызов и возвращаемое значение могут быть использованы.
Категория:
Способ, которым вы добавляете новые методы в существующий класс. Когда вы делаете это, подкласс также может использовать категоризированные методы. Вы никогда не добавляете недвижимость, используя категорию. * Однако вы можете добавить с помощью связанных объектов.
Шаблон наблюдателя:
Класс действует как вещатель и передает сообщение. Неважно, кто является его наблюдателем или получателем. И все наблюдатели получают уведомление, отправленное наблюдателем, и начинают выполнять это сообщение. Это может быть 1-к-0, 1-к-1 или 1-ко-многим. Даже несколько вещателей могут отправлять одни и те же уведомления, поэтому вы можете сказать -to-. Здесь обратный вызов или возвращаемое значение не отправляются.