За последние 24 часа нас посетили 21614 программистов и 1028 роботов. Сейчас ищут 736 программистов ...

В чём приемущество MVC

Тема в разделе "Прочие вопросы по PHP", создана пользователем Mr.M.I.T., 29 янв 2009.

  1. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    это сюда


    модель можно вынуть и вставить в другой проект, и она не упадет, потому что "взаимодействует" с моделями предыдущего проекта. это как критерий, не надо только говорить что "у меня такого не будет".
     
  2. модели не должны взаимодействовать друг с другом напрямую.
    Использование делегирования части функционала другим обьектам не делает модели из этих обьектов, моделью будет являтся тогда сумма этих обьектов.
     
  3. alexey_baranov

    alexey_baranov Активный пользователь

    С нами с:
    3 фев 2009
    Сообщения:
    647
    Симпатии:
    0
    Адрес:
    Сургут
    то, что желательно сделать модели мало зависящими друг от друга- это понятно. Было задолго до появления МВЦ, ООП и прочей, есть и будет всегда. Это всегда хорошо, потому что можно перенести модель в другой проект, повысив таким образом повторяемость кода. Это относится вообще к ооп и моделям мвц в частности. Для этого даже есть специальный термин "связность". Чем меньше связность классов, тем пизаче код- азбука. Модели в мвц- это ровно такие же классы, и на них тоже распространяется это правило.

    Но я нигде не видел и не слышал, что в мвц моделям запрящается взаимодействовать напрямую. это бред. А как же им тогда взаимодействовать? через контроллеры? У меня модели в половине случаев работают в консольном приложении, запускаемому по крону. Там вообще никаких контролеров нет. Обычные объекты взаимодействуют друг с другом, как это было задолго до появления мвц. Создаются, записываются в бд, изменяются, выгружаются, отсылают на почту уведомления (обращаю внимание флоппика, что это делает не контроллеры) и т.п.

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

    все- таки я жду хоть одну ссылку на материал, где будет написано, что в мвц моделям запрещается взаимодействовать напрямую. слова типа "чужие цитаты ни к чему", "надо думать своей головой" не канают. мы все учились на книгах.
     
  4. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    я же сказал - это критерий, а не причина.
    при изменении одной модели остальные не должны падать. при удалении тоже.
    при подмене одной модели третьей и пятой тоже.
    они пишутся (будут правиться) разными людьми, которые не хотят и не должны знать друг о друге.
     
  5. alexey_baranov

    alexey_baranov Активный пользователь

    С нами с:
    3 фев 2009
    Сообщения:
    647
    Симпатии:
    0
    Адрес:
    Сургут
    все это относится не только к мвц. это азбука ооп. так писали еще под DOS в турбо паскаль 5.0, где ни какого мвц и в помине не было. называется "связность классов", "зависимость класов" как угодно. интерфейсы и абстрактный классы все в ту же копилку. я со всем этим согласен. первый подписываюсь.

    где ссылка на статью, что в мвц модели не должны напрямую взаимодействовать друг с другом?
     
  6. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    Зачем? С точки зрения модели, другая модель является не более чем пользователем, а значит должна обращаться через стандартный интерфейс ака контроллер. Зачем ссылка на статью? Для перевода вопроса в разряд религиозных? Да программируйте Вы как хотите, называйте архитектуру как хотите, хоть MVC, хоть MVP хоть югендстилем.
     
  7. что значит должны - недолжны? Если модель выходит за рамки слоя предметной области, она перестает быть моделью.
     
  8. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Нашёл такую красивую картинку

    [​IMG]

    Service Layer является результатом выноса из логики домена логики уровня приложения.
     
  9. Схемка по Стэфферду, да. Это из Фаулера, из АКПП, 156 страница )
     
  10. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
  11. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Блин, я никак не прочту эту книгу... Как сяду за чтение -- уже ночь.
     
  12. alexey_baranov

    alexey_baranov Активный пользователь

    С нами с:
    3 фев 2009
    Сообщения:
    647
    Симпатии:
    0
    Адрес:
    Сургут
    а я всегда считал, что контроллеры связывают бизнеслогику с представлением. но теперь буду знать


    дождусь, не дождусь хоть одной ссылки от флопика и AlexGousev, где скажут что модели де должны взаимодействовать друг с другом?
     
  13. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    вот чёрт, тоже пришёл к мвц, теперь не знаю что делать больше половины движка уже написано без него...
    Зы. К мвц привела как не странно админка