Это хороший дизайн приложения, чтобы использовать первый респондент вместо цепочки методов вниз по иерархии контроллера?
Этот вопрос относится к приложению OSX, но тот же принцип может быть и для iOS.
У меня есть NSWindowController на раскадровке со следующей настройкой.
A. MainWindowController имеет в качестве подпредставлений:
1) Панель инструментов с кнопкой
2) А SubVcA
viewController с собственным контентом
B. SubVcA
имеет в качестве своего содержания, SubVcB
представление viewController
C. SubVcB
имеет функцию ButtonPressed
Цель состоит в том, чтобы вызвать функцию нажатой кнопки в SubVcB
viewController, нажав на кнопку панели инструментов.
То, как я это делал, - это иметь цепочку реализаций методов от mainWindowController до целевого viewController, вот так:
MainWindowController call method on SubVcA
-->SubVcA call method on SubVcB
---> SubVcB call method buttonPressed
Это работает, но становится грязно, когда стек контроллера достигает около 4 уровней. Это также становится еще более грязным, когда SubVC(B) должен отправить данные обратно в MainWindowController, потому что для того, чтобы иметь инкапсуляцию (например, не позволяя SubVC(B) иметь слишком много информации о вызывающих viewControllers), Я должен реализовать методы делегата обратно по цепочке. Это становится еще сложнее, когда у вас есть более чем одна кнопка на панели инструментов.
Теперь... Я только что начал возиться с первым элементом ответа на раскадровке.
И я понимаю, что всплывает ОГРОМНЫЙ список всех методов, которые реализованы в вашем приложении с -(IBAction)
,
Поэтому мой вопрос сейчас таков: чтобы уменьшить беспорядок в методах вверх и вниз по иерархии представлений, является ли хорошим дизайном приложения просто подключить действие кнопки панели инструментов MainWindowController непосредственно к методу buttonPressed в viewController SubVc(B) с помощью firstResponder объект на раскадровке?
Кроме того, есть ли другие дизайнерские паттерны, которые уменьшат беспорядок?
1 ответ
Использование первого респондента, чтобы позволить целевому действию с нулевым целевым значением просачиваться вверх по цепочке респондента, чтобы тот, кто может с ней справиться, это именно то , для чего предназначен первый респондент. И это, очевидно, намного менее грязно, чем вы сами передаете сообщение из рук в руки.