Протоколы и делегирование формализуют концепцию, которая работает, даже если вы не следуете формальным правилам: речь идет о том, чтобы обьекты могли говорить друг с другом об одном и том жеособенно в тех случаях, когда вы не имеете или не хотите контролировать один из объектов, или в случаях, когда все становится сложным, и вы хотите, чтобы все было аккуратно и аккуратно, чтобы было проще повторно использовать код.
Однако в тех случаях, когда довольно небольшой, хорошо известный набор информации должен передаваться взад и вперед между двумя (или более) хорошо известными объектами, которые вряд ли будут использоваться повторно, неформальность вполне устраивает.
Это означает, что вы можете:
- предоставить отправляющему объекту свойство типа получающего объекта
- реализовать метод в приемном объекте, который будет принимать информацию, которая будет отправлена в качестве аргумента
- в некоторый момент, например, в вашем случае, когда корневой контроллер выдвигает дочерний элемент, который становится отправляющий объект, принимающий объект будет устанавливать себя в качестве значения отправляющего объекта
- , если отправляющий объект имеетдля отправки информации используется ссылка на принимающий объект для отправки ему сообщения, вызывающего ранее упомянутый метод, передавая информацию в качестве аргумента
Как я упоминал ранеере, это имеет смысл для клея кода.Вы не должны делать это таким образом, если:
- вы работаете в команде и работаете над одним объектом, а товарищ по команде работает над другим
- очевидно, что вы сможете использовать те же функции в будущем проекте.В этом случае подумайте о наличии промежуточного подкласса между вашим исходным суперклассом и вашим подклассом для конкретного приложения, который инкапсулирует основные функциональные возможности и предлагает формальный протокол для взаимодействия с ним
- обмен информацией включает объекты различныхклассы в одном и том же приложении
- сам обмен информацией довольно сложен, и один (или два) метода склеивания его не охватят