Re[5]: Модель представление контроллер
От: DigitPower  
Дата: 04.04.05 11:37
Оценка:
DP>>Это всё упращенно и поэтому должно быть всё понятно.

A>Но модель же не должна знать о контроллерах?


A>Спасибо.


Смысл MVC — отделить бизнес-логику от представления, т.е. во View не должно быть ни какой БЛ а только отображение данных и передача в Контроллер реакции (событий) (действий) (нажатия на кнопки и т.п.).
Re[6]: Модель представление контроллер
От: Adopt  
Дата: 05.04.05 21:19
Оценка:
Здравствуйте, DigitPower, Вы писали:



DP>>>Это всё упращенно и поэтому должно быть всё понятно.


A>>Но модель же не должна знать о контроллерах?


A>>Спасибо.


DP>Смысл MVC — отделить бизнес-логику от представления, т.е. во View не должно быть ни какой БЛ а только отображение данных и передача в Контроллер реакции (событий) (действий) (нажатия на кнопки и т.п.).


то есть под событиями подразумевается изменение данных в модели
то есть юзер изменил что то в одном виде — изменение пошло в модель через конртроллер,
а потом на все контроллеры и через них на все остальные виды?

Но можно же вообще отделить модель переложить эту задачу только на контроллеры?
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Re[7]: Модель представление контроллер
От: DigitPower  
Дата: 06.04.05 06:52
Оценка: 2 (1)
Здравствуйте, Adopt, Вы писали:

A>то есть под событиями подразумевается изменение данных в модели

A>то есть юзер изменил что то в одном виде — изменение пошло в модель через конртроллер,
A>а потом на все контроллеры и через них на все остальные виды?

A>Но можно же вообще отделить модель переложить эту задачу только на контроллеры?


Можно, способов раелизации MVC много и нужно использовать наиболее подходящий в каждом конкретном случаии, а не бездумно лепить стандартный шаблон ко всем ситуациям. Но если сразу очень сложно спроектировать архитектуру программы то можно начать с простого .... к сложному.
Re[8]: Модель представление контроллер
От: Adopt  
Дата: 07.04.05 01:56
Оценка:
Здравствуйте, DigitPower, Вы писали:

DP>Здравствуйте, Adopt, Вы писали:


A>>то есть под событиями подразумевается изменение данных в модели

A>>то есть юзер изменил что то в одном виде — изменение пошло в модель через конртроллер,
A>>а потом на все контроллеры и через них на все остальные виды?

A>>Но можно же вообще отделить модель переложить эту задачу только на контроллеры?


DP>Можно, способов раелизации MVC много и нужно использовать наиболее подходящий в каждом конкретном случаии, а не бездумно лепить стандартный шаблон ко всем ситуациям. Но если сразу очень сложно спроектировать архитектуру программы то можно начать с простого .... к сложному.




именно так и хочется сделать
отсюда возникают два вопроса:

1) Сколько в средне приходиться перерабатывать архитектуру приложения?
2) Какие источники нужно использовать, в смысле где описывается и где есть примеры MVC?
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Re[9]: Модель представление контроллер
От: DigitPower  
Дата: 09.04.05 08:26
Оценка: 2 (1)
Здравствуйте, Adopt, Вы писали:

A>


A> именно так и хочется сделать

A> отсюда возникают два вопроса:

A> 1) Сколько в средне приходиться перерабатывать архитектуру приложения?

A> 2) Какие источники нужно использовать, в смысле где описывается и где есть примеры MVC?

1. Переделывать только в случае если вдруг сильно меняется ТЗ и это влияет на архитектуру.
Может быть только доработка.

2. Читай Э.Гамма Р.Хелм ... "Примеры объектно-ориентированного проектирования".

Смотри примеры для Java,C#.

http://msdn.microsoft.com/architecture/patterns/default.aspx?pull=/library/en-us/dnpatterns/html/DesMVC.asp

http://java.sun.com/blueprints/patterns/MVC-detailed.html

исходник на С#
http://codeproject.com/gen/design/MVC1.asp
Re: Модель представление контроллер
От: AlLucky Беларусь Qulix Systems
Дата: 09.04.05 10:52
Оценка:
Здравствуйте, Adopt, Вы писали:
Два топика рядом (Model-View-Controller pattern &mdash; как это делают в .NET?
Автор: ignaci_v
Дата: 05.04.05
) это прикольно
Sincerely Mine ... AlLucky Sly << RSDN@Home 1.1.4 Track0 >>
Aleksandr Sly
Re[10]: Модель представление контроллер
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.04.05 08:13
Оценка:
Здравствуйте, DigitPower, Вы писали:

DP>2. Читай Э.Гамма Р.Хелм ... "Примеры объектно-ориентированного проектирования".


В GoF MVC не описан.
... << RSDN@Home 1.1.4 beta 5 rev. 412>>
AVK Blog
Re[11]: Модель представление контроллер
От: DigitPower  
Дата: 18.04.05 06:21
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, DigitPower, Вы писали:


DP>>2. Читай Э.Гамма Р.Хелм ... "Примеры объектно-ориентированного проектирования".


AVK>В GoF MVC не описан.


Да это ты точно подметил, но объектно-ориентированное проектирование тоже знать надо
Re: Модель представление контроллер
От: maxal  
Дата: 21.04.05 14:52
Оценка:
A>Объясните пожалуйста как можно свзязать
A>паттерн Модель — Представление — Контроллер в оконном приложении

Как это делал я. Идея такая.
Модель содержит коллекцию геометрий.
Вьюшка отображает модель и передаёт сообщения системы контроллерам.
Контроллеры делают основную работу по модификации данных модели и режимов отображения вьюшки.

Модель:
class CVisualizationDoc : public CDocument
{
public:
    ...
    // Тут методы для доступа к данным и т.п.
    ...
};


Вьюшка:
class CVisualizationView : public CView
{
public:
    ...
    virtual void OnDraw(CDC* pDC); 
    afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
    afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
    afx_msg void OnMouseMove(UINT nFlags, CPoint point);
    ...
private:
    Controller* m_pActiveController;
};

// Выбираем текущий контроллер, кнопками на тулбаре
void CVisualizationView::OnController(UINT uID)
{
    m_uCurrentControllerID = uID;
    delete m_pActiveController;
    switch(m_uCurrentControllerID)
    {
    // Меняем область отображения у вьюшки
    case ID_CONTROLLER_ZOOM_IN:
        m_pActiveController = new ZoomInController(this);
        break;
    case ID_CONTROLLER_ZOOM_OUT:
        m_pActiveController = new ZoomOutController(this);
        break;
    // Редактируем существующие обьекты, модифицируем модель
    case ID_CONTROLLER_EDIT:
        m_pActiveController = new EditController(this);
        break;
    case ID_CONTROLLER_CREATE:
        m_pActiveController = new CreatePolygonController(this);
        break;
    default:
        m_pActiveController = NULL;
    }
}

// Отрисовываем выбраный - нажатым
void CVisualizationView::OnUpdateController(CCmdUI* pCmdUI)
{
    pCmdUI->SetCheck(pCmdUI->m_nID == m_uCurrentControllerID);
}

// Вьюшка получила сообщение от системы(пользователя) которое обрабатывает контроллер
void CVisualizationView::OnMouseMove(UINT nFlags, CPoint point)
{
    if(m_pActiveController != NULL)
        m_pActiveController->OnMouseMove(nFlags, point);
    CView::OnMouseMove(nFlags, point);
}

...


Контроллер:
// Базовый контроллер, дочерние переопределяют необходимые им методы и т.д.
class Controller
{
public:
    Controller(CVisualizationView* pView);
    virtual ~Controller();
    virtual void OnLButtonDown(UINT nFlags, CPoint point) {}
    virtual void OnLButtonUp(UINT nFlags, CPoint point) {}
    virtual void OnMouseMove(UINT nFlags, CPoint point) {}
    virtual void OnDraw(CDC* pDC) {}
protected:
    CVisualizationView* m_pView;
};
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Re[2]: Модель представление контроллер
От: Adopt  
Дата: 23.04.05 03:28
Оценка:
Здравствуйте, maxal, Вы писали:

A>>Объясните пожалуйста как можно свзязать

A>>паттерн Модель — Представление — Контроллер в оконном приложении

а где располагалися объект модели

То есть View содержала указательна контроллер
Controller содержал указатель на View

А кто содержал указатель на сами данные?
... << RSDN@Home 1.1.4 beta 6 rev. 422>>
Re[3]: Модель представление контроллер
От: maxal  
Дата: 25.04.05 10:41
Оценка: :)
A>а где располагалися объект модели

Это ж сделано на базе MFC Document/View Architecture.
Модель — это Документ:
class CVisualizationDoc : public CDocument{
...
};


и указатель на документ получается просто:
m_pDoc = m_pView->GetDocument();
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.