Это скорее теоретический вопрос, а не конкретный язык, но я в основном имею в виду AS3.
Допустим, у меня есть приложение, которое показывает кнопки на нескольких уровнях навигации.
Например artistsAlphabetical->albums->songs
или songsAlphabetical->song
или albumsAlphabetical->album->song
поэтому мы настроили модель (данные) со всеми песнями (наименьший общий знаменатель - в объекте песни была бы информация об исполнителе / альбоме / годе и т. Д.)
Допустим, у нас нет набора данных для альбомов, и нам нужно извлечь его из песен. или у нас есть данные, и нам нужно их сопоставить.
Куда это должно попасть? Модель или контроллер?
Я могу найти причины и того, и другого, но мне интересно, каким был бы "корректирующий" способ.
Далее у нас есть вид со всеми кнопками для сортировки.
Когда вы нажимаете кнопку сортировки Artists-A - это представление, отправляющее сообщение контроллеру, чтобы что-то сделать ( получить алфавитный список исполнителей, которые начинаются с A ). Конечный результат должен быть новым (с разбивкой по страницам, если необходимо) с кнопками для каждого исполнителя.
Какая часть MVC должна отвечать за каждый шаг?
Создание списка исполнителей, начинающихся с A
будет ли контроллер, который скажет: «Эй, модель - Художники, которые начинают с« A »СЕЙЧАС!»
или, может быть, это будет больше похоже на "Модель - пришлите мне список всех художников, мне нужно найти А-Догу"?
по сути, должна ли модель выполнять сортировку (и кэшировать ее, если это возможно / необходимо) или логика должна находиться под контроллером, и модель может хранить кэш?
Итак, когда у нас есть список исполнителей, нам нужно создать кнопку для всех тех, кто помещается на экране, плюс несколько кнопок «предыдущий / следующий». Кто должен создавать кнопки?
Должен ли быть контроллер вида? Суб-контроллер, который имеет дело только с логикой, необходимой для создания представлений? Или логика была бы частью View? Мне кажется, что контроллер приложения будет похож на «не в описании моей работы ... Я дал вам список, который вам нужен, остальное зависит от вас»
Мне кажется, что я нахожусь в противоречии между двумя представлениями MVC, одним ( mvC ) - когда контроллер работает как материнская метка, а модель является прославленным держателем данных, а представление управляет объектами DisplayObject. Или ( MVc ), где контроллером является менеджер / делегат, который обеспечивает правильную связь Модели и Представления, так что модель и представление будут иметь достаточное количество логики, и контроллер будет обрабатывать общение и делегирование взаимодействия на высшем уровне.
Хотя я делаю большую часть своей работы в AS3, мне любопытно, как другие языки справятся с этим. Например, в PHP Frameworks вам не нужно беспокоиться о логике кнопок и обработке событий так же, как с as3, где вам нужно наблюдать за сборкой мусора, поэтому рабочая нагрузка одного компонента там может отличаться от Cinder ++, приложение для обработки или ActionScript.