Re[3]: MVC + Relation Database - помогите плиз
От: AndreyFedotov Россия  
Дата: 12.03.04 21:14
Оценка: 16 (3)
Здравствуйте, dragee, Вы писали:

D>Здравствуйте, Аноним, Вы писали:


А>>Java, Нibernate.


D>А чего-нибудь попроще нет? Может какой-нибудь ненужный исходник клиента к БД на базе MVC?

D>Спасибо

Посмотри здесь
Так же может пригодиться: здесь

Впрочем, как мне кажется, шаблон довольно простой :
Допустим, что твоя база — это модель Model (или набор моделей), а все окна и формы, в которых представлена информация из базы — это представления — View.
Соответственно определяем два абстрактных класса:
CModel — базовый класс для всех классов моделей, каждый класс модели должен наследовать от CModel прямо или косвенно
CView — базовый класс для всех классов представлений, каждый класс представления должен наследовать от CView прямо или косвенно

CModel — должен поддерживать список ссылок на объекты классов представлений CView*, добавление и удаление ссылок на представления, а так же операцию извещения каждого представления из списка об изменении в модели.
CView — должен предоставлять метод, вызываемый моделью при изменении её состояния
Так же следует следить за регистрацией и дерегистрацией представлений в модели.

Довольно часто это делается так (простейщий вариант):


class CView;

class CModel
{
    public:
        BOOL Attach( CView* pView ); // Добавляет представление в список
        BOOL Detach( CView* pView ); // Удаляет представление из списка
        BOOL Notify( void ); // Извещает каждое представление в списке о изменении состояния модели
};

class CView
{
    public:
        BOOL Update( void ); // Вызывается моделью, при изменении состояния модели
};


В более сложном случае может потребоваться, что бы одно представление работало сразу с несколькими моделями, в этом случае может потребоваться передавать представлению указатель на модель, состояние которой изменилось:
class CView
{
    public:
        BOOL Update( CModel* pModel ); // Вызывается моделью, при изменении состояния модели
};


Кроме того, если перерисовка представления целиком обходится слишком дорого, то в этом случае можно оптимизировать отображение, перерисовывая только изменившуюся часть состояния модели. Это можно сделать различными способами.
Например — передавать представлению при вызове Update — информацию о том, что именно изменилось в модели, другой способ — внутри самого Update запросить модель, что именно в ней изменилось.
И, наконец, в случае, если представлений много, взаимосвязи между ними сложны, модель (или набор моделей) — так же сложны и (или) обновление происходит слишком часто, вводят дополнительную сущьность — класс контроллера (Controller).
Иногда вводится даже несколько таких классов.
Предназначение класса контроллера — оптимизация и упорядочивание взаимодействия между моделью (моделями) и её представлениями. Контроллер может выступать одновременно в роли предствления — причём часто — единственного, для модели, и моделью — для представлений исходной модели.
Контроллер может аккамулировать частые изменения, например — если модель обновляется 10 раз в секунду, он может накапливать эти изменения и сообщать о них представлениям реже — например раз в секунду, или же, например, в случае многопоточного приложения — лочить состояние модели — обновлять все её представления (гарантируя целостность и постоянство состояния в процессе обновления) и только после этого — отпускать модель...

Надеюсь это будет полезно...
MVC + Relation Database - помогите плиз
От: dragee  
Дата: 01.03.04 22:02
Оценка:
Здравствуйте. Я очень хочу создать клиентскую часть к реляционной базе данных в строгом соответствии с технологией Model-View-Controller. Но я себе очень смутно представляю как это делается Я почитал про паттерны Наблюдатель, Компановщик и Фабрика и понял их по отдельности, но как их объеденить в структуру MVC так и не понял
Кроме того, я не знаю как правильно осуществлять взаимодействие с БД, в каждом методе (модели?) или правильней будет иметь один метод "сохранение изменений в БД"?

Может быть Вы где-нибудь видели в интернете примерчик клиентского приложения к БД (двухзвенка) соответствующее канонам MVC? Я очень долго ищу что-то подобное, но так и не смог найти. Подскажите пожалуйста где можно почитать на интересующую меня тему? Заранее огромное спасибо.
Re: MVC + Relation Database - помогите плиз
От: Аноним  
Дата: 02.03.04 08:05
Оценка:
Здравствуйте, dragee, Вы писали:

D>Здравствуйте. Я очень хочу создать клиентскую часть к реляционной базе данных в строгом соответствии с технологией Model-View-Controller. Но я себе очень смутно представляю как это делается Я почитал про паттерны Наблюдатель, Компановщик и Фабрика и понял их по отдельности, но как их объеденить в структуру MVC так и не понял

D>Кроме того, я не знаю как правильно осуществлять взаимодействие с БД, в каждом методе (модели?) или правильней будет иметь один метод "сохранение изменений в БД"?

D>Может быть Вы где-нибудь видели в интернете примерчик клиентского приложения к БД (двухзвенка) соответствующее канонам MVC? Я очень долго ищу что-то подобное, но так и не смог найти. Подскажите пожалуйста где можно почитать на интересующую меня тему? Заранее огромное спасибо.


Java, Нibernate.
Re[2]: MVC + Relation Database - помогите плиз
От: dragee  
Дата: 02.03.04 11:35
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Java, Нibernate.


А чего-нибудь попроще нет? Может какой-нибудь ненужный исходник клиента к БД на базе MVC?
Спасибо
Re: MVC + Relation Database - помогите плиз
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 16.03.04 13:13
Оценка:
Здравствуйте, dragee, Вы писали:

D>Кроме того, я не знаю как правильно осуществлять взаимодействие с БД, в каждом методе (модели?) или правильней будет иметь один метод "сохранение изменений в БД"?


Если у тебя по каждому чиху будет происходить обращение к БД и соответственно обратное перечитывание изменений, то у тебя сервер БД ляжет уже при 1 подключении. Не зависимо от мощности машины. Так что "только урино-терапия", в смысле сохранять/загружать только по явной команде.

Ну это я из собсвенного опыта работы с относительно сложными объектах данных.

D>Может быть Вы где-нибудь видели в интернете примерчик клиентского приложения к БД (двухзвенка) соответствующее канонам MVC? Я очень долго ищу что-то подобное, но так и не смог найти. Подскажите пожалуйста где можно почитать на интересующую меня тему? Заранее огромное спасибо.


Посмотри еще здесь
Автор: Коваленко Дмитрий
Дата: 13.03.03
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.