Форум сайта python.su
Об отличиях между MVC и MVP хорошо написано здесь
http://aviadezra.blogspot.com/2007/07/twisting-mvp-triad-say-hello-to-mvpc.html
Товарищи, а можно к кому-нибудь в аську постучаться по поводу MVP? Я совсем недавно прозрел и понял зачем это нужно и как в целом работает, но у меня есть вопросы по деталям. Например, что есть представление: каждый виджет по-отдельности или их некая логически объединенная совокупность? Как лучше организовать добавление виджетов и сохранение ссылок на них (проблема в том, что если за все отвечает один класс, то он очень сильно разбухает при большом количестве виджетов)? Если делать несколько представлений и представителей, то как грамотнее организовать взаимодействие между ними и при этом избежать жесткой привязки? Можно с кем-нибудь поговорить на эту тему?
Офлайн
Може я чего-то не доганяю, но единственный первоисточник об 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)
Офлайн
regall404 :(
Може я чего-то не доганяю, но единственный первоисточник об MVC, который я нашел - http://heim.ifi.uio.no/~trygver/1979/mvc-2/1979-12-MVC.pdf.
Офлайн
PooH, лишняя точка в конце =(
Офлайн
regall, контроллер должен знать о модели - он ее меняет. По сути в MVC контроллер - обработчик сообщений UI.
Editor возник, кажется, немного по другой причине. Концепция создавалась-то когда!
Нужно было перейти на виджет. Зачастую еще и нажать кнопку <Enter>, чтобы перейти в режим редактирования.
Потом что-то напечатать и нажать <Enter> еще раз - чтобы послать изменения контроллеру.
Нечто вроде современного подхода к таблицам с редактированием ячеек.
Офлайн
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)
Офлайн
Андрей СветловДа, концепция древняя и видать с того времни немножко изменилась, и даже в том же smalltalk со временем.
Концепция создавалась-то когда!
Андрей Светлов>>> 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.
regall, контроллер должен знать о модели - он ее меняет.
Андрей СветловЯ для себя представляю Editor, как редактор текста. То есть он нужен, чтобы текст не сохранялся после каждого введенного символа, а хранился до нажатия кнопки сохранения. В принципе, те же яйца только в профиль.
Нечто вроде современного подхода к таблицам с редактированием ячеек.
regallСтупил, просто скушал сильно много пищи для размышлений за один раз.
В MVC есть понятие Editor, он и решает эту задачу
Отредактировано (Фев. 9, 2011 12:07:39)
Офлайн
Чтобы понять, что авторы имели в виду на самом деле - нужно брать Smalltalk, желательно тот самый, поросший паутиной - и читать реализацию библиотек, шаг за шагом.
Современному фреймворку нельзя сознаться, что он MVC не поддерживает.
Предыдущее поколение этих фрейворков натерпелось по причине плохого дизайна, а слово MVC стало чем-то вроде знака качества. Если нет - то с тобой никто говорить не будет. А присутствует каждый раз по разному, да…
Есть выделенная модель - хорошо. Без нее неудобно.
Вообще-то дальше я бы хотел поговорить как раз не о MVC или MVP - с ними всё более или менее ясно и прозрачно.
Создание нетривиальных моделей представляет больший интерес, и в этой области есть свои серьёзные проблемы и занятные способы их решения.
Офлайн
После неожиданно долгих переделок выложил третью часть “Мультипоточности” - http://asvetlov.blogspot.com/2011/02/3.html
Мониторы и Активные Объекты.
Офлайн
в примере с проверкой интернета забыли импортировать threading
Офлайн