|
|
|
MVC и избыточность кода
|
|||
|---|---|---|---|
|
#18+
Господа, долго раздумываю над преимуществами и недостатками подхода Model-View-Controller. Если не вдаваться в подробности, то все выглядит хорошо и логично. Данные, представление и управление разделены, нет никакой каши и все красиво... Но когда я приступаю к реализации такого подхода - приходится писать много рутинного кода, который необходим, для того чтобы три части MVC могли взаимодействовать друг с другом. Для примера простая задача - сделать форму с кнопкой add, которая добавляет товар в корзину. С точки зрения модели это выглядит как добавление объекта Product, с точки зрения представления - добавление контрола, который отрисует параметры товара. Поскольку view и controller взаимодействуют друг с другом через паттерн Observer, то приходится создать интерфейс AddProductListener, в контроллере реализовать этот интерфейс (класс AddProductListenerImpl). Теперь контроллер умеет обрабатывать нажатие кнопки и, соответвенно, добавить объект Product в модель. Теперь же очередь модели проинформировать View, что добавился новый элемент. Это можно также сделать через паттерн Observer, что опять же добавит еще один интерфейс ([src]ProductModelChangedListener) и класс (ProductModelChangedListenerFrameImpl). Итого четыре дополнительных класса. В общем все выходит довольно громоздко, мне это ненравится. Может быть у меня неверное представление о том как надо правильно реализовывать MVC? Или это небольшое неудобство, которое окупается, если речь идет о больших формах со сложной логикой поведения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2010, 12:16 |
|
||
|
MVC и избыточность кода
|
|||
|---|---|---|---|
|
#18+
Andrey Vokin...мне это ненравится... Мне тоже не нравится. Модель должна быть в БД, контроллер на серверном языке, а вью - хтмл+яваскрипт (возможны варианты, как удобнее). И все дела. Спорить с этим невозможно по определению первого, второго и третьего. ПС. Это если Вы имеете в виду вэб-приложения. В противном случае, лучше застрелиться или, по крайней мере, нафиг бросить эту глупость и писать двухслойные приложения. В свои молодые годы писал начальнику диссертацию по структурному программированию. Сам, по некоторым причинам, никогда не использую это из-за неудобства и плохой читаемости. ППС. Во-первых не всё золото, что блестит, а во-вторых некоторые штучки придумывают умные люди, но специально для дураков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2010, 13:08 |
|
||
|
MVC и избыточность кода
|
|||
|---|---|---|---|
|
#18+
Andrey Vokin wrote: > Для примера простая задача - сделать форму с кнопкой add, которая > добавляет товар в корзину. С точки зрения модели это выглядит как > добавление объекта Product, с точки зрения представления - добавление > контрола, который отрисует параметры товара. > Поскольку view и controller взаимодействуют друг с другом через паттерн > Observer, то приходится создать интерфейс AddProductListener, в view и model взаимодействуют друго с другом через Observer. controller тут ни при чём. > контроллере реализовать этот интерфейс (класс AddProductListenerImpl). во view. > Теперь контроллер умеет обрабатывать нажатие кнопки и, соответвенно, > добавить объект Product в модель. Зачем для обработки нажатия кнопки нужно реализовать интерфейс AddProductListener -- не понятно. Теперь же очередь модели > проинформировать View, что добавился новый элемент. Это можно также А AddProductListener тебе был зачем ? > сделать через паттерн Observer, что опять же добавит еще один интерфейс > ([src]ProductModelChangedListener) и класс > (ProductModelChangedListenerFrameImpl). Итого четыре дополнительных класса. Ну, тогда тебе не нужен был AddProductListener . > В общем все выходит довольно громоздко, мне это ненравится. Может быть у > меня неверное представление о том как надо правильно реализовывать MVC? Видимо, да. > Или это небольшое неудобство, которое окупается, если речь идет о > больших формах со сложной логикой поведения? Окупается это не тем, что большие формы со сложной логикой могут работать, а тем, что у тебя может быть N view и M controller-ов, и один и тот же документ. И ты это всё можешь комбинировать в приложении почти произвольным образом. MS Word видел ? Там хоть 20 окон можно на один документ открыть, в разных вариантах просмотра (структура, макет страницы, редактирование и т.п.) Вот это и есть преимущество MVC. Оно не делает что-то лучше, оно ВООБЩЕ ДЕЛАЕТ ЭТО ВОЗМОЖНЫМ. Разницу чувствуешь ? Ну и соответственно, за все возможности приходится чем-то платить, в MVC это -- более сложная структура классов программы и где-то лишний код (на самом деле его нет, лишнего, потому что без MVC его было бы ещё больше). Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2010, 18:55 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=99&tid=1343530]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 381ms |

| 0 / 0 |
