РЕДАКТИРОВАТЬ (после комментария):
Это полностью соответствует MVC, IMO. Ваш FavoritesViewController
отвечает за указание объекта, с которым вы имеете дело, и за вызов соответствующего правильного контроллера (контроллера представления CatDetail или DogDetail). Он по-прежнему содержит знания о бизнес-логике вашего приложения, а модель и представления должным образом отделены от него. Видите ли, в конце концов, между FavoritesViewController
и DogsViewController
/ CatsViewController
нет большой разницы; единственное отличие состоит в том, что FavoritesViewController
знает о двух типах данных вместо одного.
СТАРЫЙ ОТВЕТ:
Я не уверен, что полностью понимаю ваш сценарий, но из того, что я понимаю, я бы сказал, что вы, возможно, немного нарушаете принцип инкапсуляции; затем все сводится к тому, как вы это делаете, то есть, используете ли вы фабрику или как вы создаете конкретную базу контроллера на основе информации о модели.
Что касается MVC, я думаю, что вы не нарушаете его специально. Пока «контроллер» отвечает за создание ваших конкретных классов контроллеров, вы играете в его границах.
Хорошо, возьмите это с крошкой соли, поскольку у меня есть только очень частичное понимание того, что вы делаете. В любом случае, надеюсь, это поможет.