Здравствуйте, 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 раз в секунду, он может накапливать эти изменения и сообщать о них представлениям реже — например раз в секунду, или же, например, в случае многопоточного приложения — лочить состояние модели — обновлять все её представления (гарантируя целостность и постоянство состояния в процессе обновления) и только после этого — отпускать модель...
Надеюсь это будет полезно...
Здравствуйте. Я очень хочу создать клиентскую часть к реляционной базе данных в строгом соответствии с технологией Model-View-Controller. Но я себе очень смутно представляю как это делается

Я почитал про паттерны Наблюдатель, Компановщик и Фабрика и понял их по отдельности, но как их объеденить в структуру MVC так и не понял

Кроме того, я не знаю как правильно осуществлять взаимодействие с БД, в каждом методе (модели?) или правильней будет иметь один метод "сохранение изменений в БД"?
Может быть Вы где-нибудь видели в интернете примерчик клиентского приложения к БД (двухзвенка) соответствующее канонам MVC? Я очень долго ищу что-то подобное, но так и не смог найти. Подскажите пожалуйста где можно почитать на интересующую меня тему? Заранее огромное спасибо.
Здравствуйте, dragee, Вы писали:
D>Здравствуйте. Я очень хочу создать клиентскую часть к реляционной базе данных в строгом соответствии с технологией Model-View-Controller. Но я себе очень смутно представляю как это делается
Я почитал про паттерны Наблюдатель, Компановщик и Фабрика и понял их по отдельности, но как их объеденить в структуру MVC так и не понял
D>Кроме того, я не знаю как правильно осуществлять взаимодействие с БД, в каждом методе (модели?) или правильней будет иметь один метод "сохранение изменений в БД"?
D>Может быть Вы где-нибудь видели в интернете примерчик клиентского приложения к БД (двухзвенка) соответствующее канонам MVC? Я очень долго ищу что-то подобное, но так и не смог найти. Подскажите пожалуйста где можно почитать на интересующую меня тему? Заранее огромное спасибо.
Java, Нibernate.
Здравствуйте, Аноним, Вы писали:
А>Java, Нibernate.
А чего-нибудь попроще нет?

Может какой-нибудь ненужный исходник клиента к БД на базе MVC?
Спасибо
Здравствуйте, dragee, Вы писали:
D>Кроме того, я не знаю как правильно осуществлять взаимодействие с БД, в каждом методе (модели?) или правильней будет иметь один метод "сохранение изменений в БД"?
Если у тебя по каждому чиху будет происходить обращение к БД и соответственно обратное перечитывание изменений, то у тебя сервер БД ляжет уже при 1 подключении. Не зависимо от мощности машины. Так что "только урино-терапия", в смысле сохранять/загружать только по явной команде.
Ну это я из собсвенного опыта работы с относительно сложными объектах данных.
D>Может быть Вы где-нибудь видели в интернете примерчик клиентского приложения к БД (двухзвенка) соответствующее канонам MVC? Я очень долго ищу что-то подобное, но так и не смог найти. Подскажите пожалуйста где можно почитать на интересующую меня тему? Заранее огромное спасибо.
Посмотри еще
здесьАвтор: Коваленко Дмитрий
Дата: 13.03.03
-- Пользователи не приняли программу. Всех пришлось уничтожить. --