Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 8, 2011 10:55:29

Soteric
От:
Зарегистрирован: 2010-09-19
Сообщения: 352
Репутация: +  20  -
Профиль   Отправить e-mail  

Статьи

Об отличиях между MVC и MVP хорошо написано здесь

http://aviadezra.blogspot.com/2007/07/twisting-mvp-triad-say-hello-to-mvpc.html

Товарищи, а можно к кому-нибудь в аську постучаться по поводу MVP? Я совсем недавно прозрел и понял зачем это нужно и как в целом работает, но у меня есть вопросы по деталям. Например, что есть представление: каждый виджет по-отдельности или их некая логически объединенная совокупность? Как лучше организовать добавление виджетов и сохранение ссылок на них (проблема в том, что если за все отвечает один класс, то он очень сильно разбухает при большом количестве виджетов)? Если делать несколько представлений и представителей, то как грамотнее организовать взаимодействие между ними и при этом избежать жесткой привязки? Можно с кем-нибудь поговорить на эту тему?



Офлайн

#2 Фев. 8, 2011 11:06:09

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Статьи

Може я чего-то не доганяю, но единственный первоисточник об MVC, который я нашел - http://heim.ifi.uio.no/~trygver/1979/mvc-2/1979-12-MVC.pdf Тут окончательно определены термины модели, вида, контроллера, и редактора от создателей подхода MVC. Здесь нигде не указано, что контроллер должен взаимодействовать с моделью, хотя во всех статьях это есть, в том числе в реализации MVC в Smalltalk80 версии 92-го года: http://st-www.cs.illinois.edu/users/smarch/st-docs/mvc.html И опять-таки тут определен Editor (посредник, существующий для того, чтобы модель не изменялась на каждый чих). Просветите, плз.



Отредактировано (Фев. 8, 2011 18:43:31)

Офлайн

#3 Фев. 8, 2011 18:16:15

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Статьи

regall
Може я чего-то не доганяю, но единственный первоисточник об MVC, который я нашел - http://heim.ifi.uio.no/~trygver/1979/mvc-2/1979-12-MVC.pdf.
404 :(



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#4 Фев. 8, 2011 18:43:13

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Статьи

PooH, лишняя точка в конце =(



Офлайн

#5 Фев. 9, 2011 11:45:01

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Статьи

regall, контроллер должен знать о модели - он ее меняет. По сути в MVC контроллер - обработчик сообщений UI.
Editor возник, кажется, немного по другой причине. Концепция создавалась-то когда!
Нужно было перейти на виджет. Зачастую еще и нажать кнопку <Enter>, чтобы перейти в режим редактирования.
Потом что-то напечатать и нажать <Enter> еще раз - чтобы послать изменения контроллеру.

Нечто вроде современного подхода к таблицам с редактированием ячеек.



Офлайн

#6 Фев. 9, 2011 11:55:34

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Статьи

Soteric, хорошая статья. Только автор, вслед за Фаулером, злоупотребляет придумыванием определений.
Оно, конечно, помогает не путаться - только очень утомительно придумывать по новому слову на каждый чих.
Так можно договорится и до создания тридцати трех разновидностей Visitor, объединенных в иерархию. Да только не поможет - очень быстро обнаружится,
что программе нужна тридцать четвертая, неучтенная разновидность.

Аськой не пользуюсь. Скайп - andy.svetlov

Представление - одно на форму.
Его логика каждый раз строится заново под задачу.
Несколько помогает создание хелперов-синхронизаторов. Например,

class Presenter(object):
def __init__(self, model, view):
self.model = model
self.view = view

self.value_sync = TextWithColorSync(self.model.get_value, self.model.set_value, self.model.get_color, self.model.get_enabled)



Офлайн

#7 Фев. 9, 2011 12:06:38

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Статьи

Андрей Светлов
Концепция создавалась-то когда!
Да, концепция древняя и видать с того времни немножко изменилась, и даже в том же smalltalk со временем.

Андрей Светлов
regall, контроллер должен знать о модели - он ее меняет.
>>> The controller receives such user output, translates it into the appropriate messages and pass these messages on .to one or more of the views. A view is attached to its model (or model part) and gets the data necessary for the presentation from the model by asking questions. It may also update the model by sending appropriate messages.

Вот из-за этих строк и спрашиваю, так как это первоисточник, а чем больше статей читаешь, тем больше каких-то мелких уточнений, я бы даже сказал “авторских интерпретаций”, наверное из-за этого из MVC выросло штук 10 разных моделей, так или иначе базирующихся на MVC, но имеющих отличия иногда очень существенные, иногда не очень. А еще хочется разобраться полностью ввиду того, что каждый фреймворк считает нужным сказать, что он MVC, как будто без этого его перестанут использовать, или он станет без этого хуже. Я этого просто не понимаю =(.

Андрей Светлов
Нечто вроде современного подхода к таблицам с редактированием ячеек.
Я для себя представляю Editor, как редактор текста. То есть он нужен, чтобы текст не сохранялся после каждого введенного символа, а хранился до нажатия кнопки сохранения. В принципе, те же яйца только в профиль.

regall
В MVC есть понятие Editor, он и решает эту задачу
Ступил, просто скушал сильно много пищи для размышлений за один раз.

P.S.
Жду продолжения…



Отредактировано (Фев. 9, 2011 12:07:39)

Офлайн

#8 Фев. 9, 2011 12:17:16

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Статьи

Чтобы понять, что авторы имели в виду на самом деле - нужно брать Smalltalk, желательно тот самый, поросший паутиной - и читать реализацию библиотек, шаг за шагом.

Современному фреймворку нельзя сознаться, что он MVC не поддерживает.

Предыдущее поколение этих фрейворков натерпелось по причине плохого дизайна, а слово MVC стало чем-то вроде знака качества. Если нет - то с тобой никто говорить не будет. А присутствует каждый раз по разному, да…

Есть выделенная модель - хорошо. Без нее неудобно.

Вообще-то дальше я бы хотел поговорить как раз не о MVC или MVP - с ними всё более или менее ясно и прозрачно.

Создание нетривиальных моделей представляет больший интерес, и в этой области есть свои серьёзные проблемы и занятные способы их решения.



Офлайн

#9 Фев. 9, 2011 19:35:39

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Статьи

После неожиданно долгих переделок выложил третью часть “Мультипоточности” - http://asvetlov.blogspot.com/2011/02/3.html
Мониторы и Активные Объекты.



Офлайн

#10 Фев. 9, 2011 22:01:39

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

Статьи

в примере с проверкой интернета забыли импортировать threading



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version