Утверждение в заголовке звучит весьма резко и вызывающе, и многие сразу начинают с ним спорить.
На самом деле, это краткая форма более полного утверждения: «В настощее время на текущем этапе развития научно-технического прогресса, теории и практики алгоритмизации и программирования, реализация теоретического обоснования идеи MVC (Model-View-Controller Данные-Представление-Управление) в полной мере невозможна». Ещё раз: речь идёт о невозможности реализации, соответствующей теоретическему обоснованию идеи.
Возможны лишь некоторые приближения. После некоторых допущений.
А теперь по порядку:
а) МВЦ так и не имеет канонического описания. И каждый вправе думать про него что хочет.
б) МВЦ не имеет канонического описания по факту своего появления. Его придумали и начали использовать программисты Small Talk в программировании (исключительно!) пользовательских интерфейсов.
в) Причём, если мы будем фанатично следовать триразделённости МВЦ в проектировании приложений, забывая о пункте б), что часто бывает, может возникнуть примерно следующая ситуация:
Это нереализуемая патовая ситуация.
Любой другой вариант является отклонением от исходного разделения и удаляет нас от МВЦ.
г) В свете вышесказанного особенно опасно говорить о МВЦ в приложениях, которые фактически не имеют тесной связи с клиентской частью. На мой взгляд, это все веб-приложения, за исключением, может быть, ява-апплетов.
д) Все виденные мною «реализации МВЦ» для пхп (все берут корни из phptemplates.org когда он был ещё жив; не ходите туда сейчас – там чей-то пустой блог) не являются МВЦ, это плохие эмуляции. Хотя бы потому, что классический МВЦ утверждает независимость трёх компонентов. Которая отсутствует в этих эмуляциях.
е) Даже полная «объектизация» языка программирования не помогает в реализации МВЦ.
Нет ничего плохого, если вы используете какой-либо из ранее найденных на просторах интернета шаблонов якобы МВЦ, или даже придумали свою реализацию %) Присмотритесь к ней внимательней, и вам захочется рефакторить её и рефакторить, и рефакторить, и рефакторить...
Не надо называть МВЦ то, что МВЦ не является.
На мой взгляд, о МВЦ нельзя думать как о шаблоне (pattern) реализации или разработки, и даже говоря о МВЦ как о шаблоне проектирования, не надо закладывать в схему (в проект) эти три буквы %) Лучше уж «проект пишем, МВЦ в уме».
На самом деле, это краткая форма более полного утверждения: «В настощее время на текущем этапе развития научно-технического прогресса, теории и практики алгоритмизации и программирования, реализация теоретического обоснования идеи MVC (Model-View-Controller Данные-Представление-Управление) в полной мере невозможна». Ещё раз: речь идёт о невозможности реализации, соответствующей теоретическему обоснованию идеи.
Возможны лишь некоторые приближения. После некоторых допущений.
А теперь по порядку:
а) МВЦ так и не имеет канонического описания. И каждый вправе думать про него что хочет.
б) МВЦ не имеет канонического описания по факту своего появления. Его придумали и начали использовать программисты Small Talk в программировании (исключительно!) пользовательских интерфейсов.
в) Причём, если мы будем фанатично следовать триразделённости МВЦ в проектировании приложений, забывая о пункте б), что часто бывает, может возникнуть примерно следующая ситуация:
предположим, контроллер получает сигнал о необходимости изменений представления данных, обращается в модель за данными, модель (как достаточно высокоуровневая система) обращается к подсистеме хранения данных. И, следуя идее МВЦ, обращается она к контроллеру подсистемы, который запрашивает собственную модель, и т.д. вглубь...
Это нереализуемая патовая ситуация.
Любой другой вариант является отклонением от исходного разделения и удаляет нас от МВЦ.
г) В свете вышесказанного особенно опасно говорить о МВЦ в приложениях, которые фактически не имеют тесной связи с клиентской частью. На мой взгляд, это все веб-приложения, за исключением, может быть, ява-апплетов.
д) Все виденные мною «реализации МВЦ» для пхп (все берут корни из phptemplates.org когда он был ещё жив; не ходите туда сейчас – там чей-то пустой блог) не являются МВЦ, это плохие эмуляции. Хотя бы потому, что классический МВЦ утверждает независимость трёх компонентов. Которая отсутствует в этих эмуляциях.
е) Даже полная «объектизация» языка программирования не помогает в реализации МВЦ.
Нет ничего плохого, если вы используете какой-либо из ранее найденных на просторах интернета шаблонов якобы МВЦ, или даже придумали свою реализацию %) Присмотритесь к ней внимательней, и вам захочется рефакторить её и рефакторить, и рефакторить, и рефакторить...
Не надо называть МВЦ то, что МВЦ не является.
На мой взгляд, о МВЦ нельзя думать как о шаблоне (pattern) реализации или разработки, и даже говоря о МВЦ как о шаблоне проектирования, не надо закладывать в схему (в проект) эти три буквы %) Лучше уж «проект пишем, МВЦ в уме».
Вот, кажется, и всё. Это из личного опыта и опыта виртуальных коллег.
Надеюсь, прочитанное вам поможет. Хотя, см. п. а)
зы: тоже польза http://phpclub.ru/talk/showthread.php?threadid=71560&highlight=mvc
зы2: статья основана на переписке с потенциальным работодателем. и полугодичных мытарствах с mvcговнопаттернами
лето 2007г
Надеюсь, прочитанное вам поможет. Хотя, см. п. а)
зы: тоже польза http://phpclub.ru/talk/showthread.php?threadid=71560&highlight=mvc
зы2: статья основана на переписке с потенциальным работодателем. и полугодичных мытарствах с mvcговнопаттернами
лето 2007г
ps: http://angry-web.blogspot.com/2008/09/blog-post_26.html