Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.13;
Скачать: CL | DM;

Вниз

Пример работы с базой (хочу идеальный код)   Найти похожие ветки 

 
Dust ©   (2006-06-03 13:41) [0]

Имеет ли смысл всю работу с базой переносить в дата-модуль?
стоит ли описывать класс типа TMyDatabase, и тд и тп...?


 
DSKalugin ©   (2006-06-03 15:26) [1]

1-да, это логичней, чем размазывать его по всем модулям. Под кнопками и другими элементами управления должны быть только процедуры управления ходом выполнения программы и вызовы готовых процедур обращения к БД, опи санных в датамодуле.

2-он уже описан в компонентах прямого доступа IBObjects, FibPlus, IBX, dbExpress. Так что достаточно воспользоваться готовым, например
MyDatabase: TpFIBDatabase;


 
atruhin ©   (2006-06-03 16:26) [2]


> 1-да, это логичней, чем размазывать его по всем модулям.

Известный вариант, но есть недостатки, в достаточно большом проекте этот модуль может получится огромных размеров, плюс все модули должны иметь на него ссылки, затрудняется работа в комманде.
Есть другой вариант, главное окно предоставляет интерфейс через который можно получить коннект к БД, транзакциям и т.д., а также управляет созданием закрытием окон. Например по имени класса окна:
 FormClass := GetClass(ClassName);
 if Assigned(FormClass) then begin
   WinClass := TfrmAbstractChild(FormClass.NewInstance);
   (WinClass as ICreateObject).Init(ObjID, self ....);
   WinClass.Create(self);
Окно получает ссылку на документ, с которым должно работать и ссылку на интерфейс. Вся работа с БД НЕОБХОДИМАЯ ЭТОМУ ОКНУ осуществляется в нем. В целом окно ни чего не знает о других окнах, включая главное, а оно не знает о дочерних. В таком варианте отдельные окна могут разрабатывать разные люди, также очень легко олаживать модифицировать т.к. мы имеем небольшие абсолютно независимые модули.


 
Курдль ©   (2006-06-05 11:44) [3]


> хочу идеальный код


Идеальный - не получится. Если хотите оптимальный - надо много читать.
Рекомендую почитать про GRASP и GoF. (Ларман, Гамма и т.п.) Как раз там объясняют, как правильно "делить" программы на модули.



Страницы: 1 вся ветка

Текущий архив: 2006.08.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.029 c
3-1149402157
SamProf
2006-06-04 10:22
2006.08.13
Как найти запись и изменить


15-1152966255
Юрий Зотов
2006-07-15 16:24
2006.08.13
2 stone: Олег, позвони мне, пожалуйста.


3-1149574047
q-q
2006-06-06 10:07
2006.08.13
Используя ЗАБОЙ, полю присваивается NULL, а хотелось бы НОЛЬ


6-1143385179
anton773
2006-03-26 18:59
2006.08.13
декодирование почтового сообщения


15-1153206943
tButton
2006-07-18 11:15
2006.08.13
демография (косвенно)