это сюда модель можно вынуть и вставить в другой проект, и она не упадет, потому что "взаимодействует" с моделями предыдущего проекта. это как критерий, не надо только говорить что "у меня такого не будет".
модели не должны взаимодействовать друг с другом напрямую. Использование делегирования части функционала другим обьектам не делает модели из этих обьектов, моделью будет являтся тогда сумма этих обьектов.
то, что желательно сделать модели мало зависящими друг от друга- это понятно. Было задолго до появления МВЦ, ООП и прочей, есть и будет всегда. Это всегда хорошо, потому что можно перенести модель в другой проект, повысив таким образом повторяемость кода. Это относится вообще к ооп и моделям мвц в частности. Для этого даже есть специальный термин "связность". Чем меньше связность классов, тем пизаче код- азбука. Модели в мвц- это ровно такие же классы, и на них тоже распространяется это правило. Но я нигде не видел и не слышал, что в мвц моделям запрящается взаимодействовать напрямую. это бред. А как же им тогда взаимодействовать? через контроллеры? У меня модели в половине случаев работают в консольном приложении, запускаемому по крону. Там вообще никаких контролеров нет. Обычные объекты взаимодействуют друг с другом, как это было задолго до появления мвц. Создаются, записываются в бд, изменяются, выгружаются, отсылают на почту уведомления (обращаю внимание флоппика, что это делает не контроллеры) и т.п. А когда мне надо обернуть их пользовательским интерфейсом под WEB, я эти же самые объекты использую как модели для мвц. Просто обертываю их вьюшками и контроллерами. Все просто, все логично. О чем тут спорить, не понимаю. все- таки я жду хоть одну ссылку на материал, где будет написано, что в мвц моделям запрещается взаимодействовать напрямую. слова типа "чужие цитаты ни к чему", "надо думать своей головой" не канают. мы все учились на книгах.
я же сказал - это критерий, а не причина. при изменении одной модели остальные не должны падать. при удалении тоже. при подмене одной модели третьей и пятой тоже. они пишутся (будут правиться) разными людьми, которые не хотят и не должны знать друг о друге.
все это относится не только к мвц. это азбука ооп. так писали еще под DOS в турбо паскаль 5.0, где ни какого мвц и в помине не было. называется "связность классов", "зависимость класов" как угодно. интерфейсы и абстрактный классы все в ту же копилку. я со всем этим согласен. первый подписываюсь. где ссылка на статью, что в мвц модели не должны напрямую взаимодействовать друг с другом?
Зачем? С точки зрения модели, другая модель является не более чем пользователем, а значит должна обращаться через стандартный интерфейс ака контроллер. Зачем ссылка на статью? Для перевода вопроса в разряд религиозных? Да программируйте Вы как хотите, называйте архитектуру как хотите, хоть MVC, хоть MVP хоть югендстилем.
что значит должны - недолжны? Если модель выходит за рамки слоя предметной области, она перестает быть моделью.
Нашёл такую красивую картинку Service Layer является результатом выноса из логики домена логики уровня приложения.
а я всегда считал, что контроллеры связывают бизнеслогику с представлением. но теперь буду знать дождусь, не дождусь хоть одной ссылки от флопика и AlexGousev, где скажут что модели де должны взаимодействовать друг с другом?
вот чёрт, тоже пришёл к мвц, теперь не знаю что делать больше половины движка уже написано без него... Зы. К мвц привела как не странно админка