Приложение базы данных с помощью парадигмы MVC

В классическом приложении базы данных Delphi у нас есть форма, ряд осведомленных о данных визуальных средств управления, подключенных к TDataSets через TDataSources. Если Вы хотите разработать приложение базы данных с помощью модели MVC, куда поместить компоненты TDataSet? Они должны остаться на форме и поэтому быть частью Представления? Или они должны инкапсулироваться в некотором Объекте модели? Если последний, как они могли быть связаны с визуальными компонентами?

7
задан mghie 11 April 2010 в 08:20
поделиться

2 ответа

Вы можете увидеть проект delphi через глаза MVC следующим образом:

TDataModule -> Model
TYourForm.pas -> Controller
TYourForm.dfm -> View

Если вы его принимаете, то вам следует поместить DataSets в Datamodule.

В проекте, над которым я работаю, я также помещаю TClientDataSets в формы и клонирую данные при создании. Таким образом, я изолировал данные в TForm с логикой в ​​модуле данных.

Жалко, что для delphi нет фреймворка, подобного ActiveRecord.

3
ответ дан 7 December 2019 в 12:17
поделиться

Я создал MVC-подобную структуру для моего текущего клиента, для вас это будет примерно так:

  • TDatamodule = Model (для данных, итак, материал TDataset)
  • TForm = View (содержит источники данных, подключенные к TDataset модели)
  • Controller.pas = Controller (выполнение / бизнес-логика)

Старайтесь, чтобы ваша форма была как можно более чистой: может содержать только материал для графического интерфейса. Реализуйте в контроллере специальную логику (бизнес-правила, обновление данных и т. Д.). Имейте в виду: ваше представление должно быть легко заменено другим представлением (например, веб-страницей).

В моей MVC-подобной структуре представление вызывает методы (например, поиск, обновление и т. Д.) С параметрами контроллера, контроллер знает, что и как искать и т. Д., И заполняет / обновляет модель. Вид связан с моделью (свойством контроллера).
Это не совсем MVC, но таким образом графический интерфейс отделен от всех видов логики, и его по-прежнему легко отлаживать и поддерживать (вы можете использовать внедрение зависимостей / слабую связь с контроллером и т. Д., Но это усложняет задачу, используйте только при необходимости)

2
ответ дан 7 December 2019 в 12:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: