Форум: "Прочее";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];
ВнизЕще про DataLayer, а как предпологается быть с отображением? Найти похожие ветки
← →
Kolan © (2007-07-18 21:09) [0]Здравствуйте,
В продолжение ветки:
http://delphimaster.net/view/15-1184071382/
Идея примерно мне ясна, а как быть напрактике, как реализовать отображение…
Конкретный вопрос:
Итак есть такие объекты в Domain:
Какой-то элемент:TItem = class
FID: Integer;
FValue: string;
end;
И список таких элементов:TItemList = class(TObjectList)
function Add(Item: TItem): Integer;
propert Items[Index: Integer]: TItem …
end;
И, допустим, есть Mapper, который умеет отображать TItemList в БД.TItemListMapper = class
procedure MapItem(ItemList: TItemList);
end;
В БД есть соотв. таблица:
Items
ID: Integer
Value: string
Теперь сам вопрос:
Допусти п ТЗ задача редактировать список ItemList"ов В таблице. Если пользовать стандартный Delphi, то можно кинуть DBGrid подключить его прям к таблице Items и все — на редактируй.
А в случае с DataLayer — как предоставить возможность редактирования? Какой компонент использовать? И что будет с производительностью? А если записей много?
← →
Kolan © (2007-07-19 10:05) [1]Как то страшно делать проект не даже примерно не понимая как делать UI.
← →
Игорь Шевченко © (2007-07-19 10:24) [2]
> ? Какой компонент использовать?
Руки.pas
Я в свое время плюнул на проблему отображения списка моделей и честно отображал собержимое DataSet в DBGrid, бо проще. Да, чистая теория пострадала, ну и хрен бы с ней. Если ты заметишь, то в теории про Delphi с ее готовым механизмом не упоминается, хочется странного - иди на сайт
tiopf - они много преуспели в чистой теории.
← →
Kolan © (2007-07-19 10:49) [3]> Я в свое время плюнул на проблему отображения списка моделей
> и честно отображал собержимое DataSet в DBGrid, бо проще.
Раскажите подробнее как бы вы реализовали то что я привер в кач примера. Я тоже понимаю, что сделать все с пом.руки.pas
я просто не смогу физически.
Как вы реализовали взаимодействие? Для чего тогда нужен Domain? Есть ли в этом случае DataLayer и что он делает? Объясните, пожалуйста, а то я уже проектировать программные классы должен начать, а все еще остался вопрос «зачем?».
← →
Игорь Шевченко © (2007-07-19 10:53) [4]
> Раскажите подробнее как бы вы реализовали то что я привер
> в кач примера
С картинками ?
Эт можно. Написал бы Dataset, возвращающий SELECT id,value FROM table и работал бы с ним посредством DBGrid.
И все.
← →
Kolan © (2007-07-19 11:06) [5]> [4] Игорь Шевченко © (19.07.07 10:53)
> С картинками ?
Да. А зачем послали читать Лармана и Файлера, если все сводится к киданию двух компонентов?
Понятно пример элементарный, но я хотел на нем получить пример архитектуры всеже есть Domain и DataLayer, но используются и стандартные компоненты Delphi…
Или например на DataLayer используется не маппер, а что то проще.
Или может Domain состоит из экземпляров TDataSet.
Как быть, просветлите? Сейчас в голове неразбериха. Теорию я понимаю, а как это реализовать — нет :(
← →
Игорь Шевченко © (2007-07-19 11:20) [6]
> А зачем послали читать Лармана и Файлера, если все сводится
> к киданию двух компонентов?
А затем, что обработку таблицы из двух полей гораздо проще сделать киданием двух компонентов. Из трех полей тоже.
Я сильно сомневаюсь, что тебе по роду деятельности приходится иметь дело только с такими таблицами, впрочем, это не интересно.
> Понятно пример элементарный, но я хотел на нем получить
> пример архитектуры всеже есть Domain и DataLayer, но используются
> и стандартные компоненты Delphi…
А зачем оно - на элементарном примере ? Элементарные примеры проще делать на том, что предназначено для элементарных примеров, а именно на Delphi и стандартных компонентах VCL.
> Как быть, просветлите?
Например, сходить на сайт tiopf (найти в google по указанному слову).
> Или например на DataLayer используется не маппер, а что
> то проще.
> Или может Domain состоит из экземпляров TDataSet.
Эта...у меня твой кэш не загружен...
← →
Kolan © (2007-07-19 11:29) [7]> Я сильно сомневаюсь, что тебе по роду деятельности приходится
> иметь дело только с такими таблицами
Ессно они сложнее их больше, но на простом примере же всего понимание приходит.
> А зачем оно — на элементарном примере ?
Ладно усложню, раз так хотите. Допустим есть два подкласса TItem
1.
TFirstItem = class(TItem)
FS: string;
end;
2.
TSecondItem = class
FI: Integer;
end;
И соответствующие имTFirstItemList TSecondItemList
И соответственно две таблицы:IFirsttems
ID: Integer
Value: string
S: string
ISecondtems
ID: Integer
Value: string
I: Integer
И есть два алгоритма обработкиTItem
. В зависимости от того к какому подклассу отностися данный экземпляр.
Работая с объектами я бы ессно применил паттерн стратегия и спал спокойно.
А как
> Например, сходить на сайт tiopf
Сходил уже. Читаю — это сохранение в основном, а меня заботит
← →
Kolan © (2007-07-19 11:32) [8]… случаено нажал Ctrl+Enter…
И вот у меня два вопроса.
В случае с наличием Domain я незнаю как отображать, но знаю как выбрать и применить нужный алгоритм(стратегия)
В случае без Domain отображать как понятно — непонятно как быть с алгоритмами и их выбором…\
Сходил уже. Читаю — это сохранение в основном, а меня заботит UI
← →
Kolan © (2007-07-19 21:17) [9]Плохой пример что ли?
ЗЫ
Хотя я считаю что объяснить прше на первом примере…
← →
Kolan © (2007-07-24 16:55) [10]> [2] Игорь Шевченко © (19.07.07 10:24)
> Руки.pas
Что-то они уже болят, но кажется стало вырисовываться. Пока отображаю на StringGrid. Осталось сделать редактирование…
← →
clickmaker © (2007-07-24 17:21) [11]
> меня заботит UI
UI должно заботить заказчика и постановщика задачи (если, конечно, ты не оба сразу в одном лице).
Чем точнее они тебе обрисуют, какое они хотят УИ, тем меньше головной боли всем
← →
Kolan © (2007-07-24 17:56) [12]Да тут даже дело не в заказчике, тупо сделать так, чтобы при редактировании StringGrid(например) изменялся объект в Domain не так и просто… :(
← →
Sergey Masloff (2007-07-24 20:51) [13]Kolan © (24.07.07 17:56) [12]
А теперь подумай про то что делать когда при изменении одного атрибута изменились (следуя бизнес-логике) еще несколько. И юзер желает это видеть немедленно.
А потом подумай на хрена эту дурь городить. Из чистоты теории? Паттерны?
Так посмотри на связку DataSet-DataSource-DataAwareControl. И подумай а тут уже паттерны не применены ли? И писали это люди не поумней чем колян да сергей маслов? И напишешь ли ты хоть когда-нибудь хоть что-то не то что лучше - хотя бы такое же? ;-)))
← →
Kolan © (2007-07-24 21:35) [14]> А теперь подумай про то что делать
Дык вот думаю. Я понимаю что тут возникают трудности… Изменения в Domain внести гораздо легче буде,а с UI и DataLayer проблеммы, потому, что я их хреново реализовал.
> DataSet-DataSource-DataAwareControl
Моё имхо — это плохой путь и если я по нему пойду, то никогда не дорасту до настоящего программиста.
Надо попробовать, ведь незря же Умные люди книги пишут…
Да и я за время работы без БД немогу перестроиться на это батонокидательство сразу :(
> И подумай а тут уже паттерны не применены ли?
Да причем тут паттерны.
← →
Игорь Шевченко © (2007-07-25 10:19) [15]
> Так посмотри на связку DataSet-DataSource-DataAwareControl.
> И подумай а тут уже паттерны не применены ли? И писали
> это люди не поумней чем колян да сергей маслов? И напишешь
> ли ты хоть когда-нибудь хоть что-то не то что лучше - хотя
> бы такое же? ;-)))
В этом и беда разработчиков на Delphi, что они отравлены ядом двухслойной архитектуры. Data-aware controls писались для парадокса и иже с ним
← →
Kolan © (2007-07-25 10:36) [16]> В этом и беда разработчиков на Delphi, что они отравлены
> ядом двухслойной архитектуры.
Получается выход в уходе с Delphi?
← →
Polevi © (2007-07-25 10:37) [17]>Игорь Шевченко © (25.07.07 10:19) [15]
ерунда какая, я вот пользуюсь без парадоксов
← →
Игорь Шевченко © (2007-07-25 11:09) [18]Polevi © (25.07.07 10:37) [17]
Отнюдь не ерунда. Я тоже пользуюсь - а зачем велосипед изобретать. Но при попытке выйти за рамки сразу наступаю на те же грабли, что и автор ветки.
Ты на tiopf сходи, глянь зачем люди ерундой страдали, мегабайты кода написали.
Сравни с архитектурой .Net.
Kolan © (25.07.07 10:36) [16]
> Получается выход в уходе с Delphi?
Когда под рукой нет ничего, кроме молотка, все вокруг кажется гвоздями.
Зачем куда-то уходить - есть опыт работы в Delphi, пользуйся на здоровье, только не надо к собаке приделывать несвойственные ей лишние конечности.
← →
Kolan © (2007-07-25 11:21) [19]> Зачем куда-то уходить
Просто я крутил ECO:
http://dn.codegear.com/article/33669
Гораздо понятнее, но только по Net.
Уходить есно не буду, тк ничего другого хорошо незнаю.
> только не надо к собаке приделывать несвойственные ей лишние
> конечности.
> они отравлены ядом двухслойной архитектуры
В смысле травиться предлогаете?
← →
Игорь Шевченко © (2007-07-25 11:35) [20]Kolan © (25.07.07 11:21) [19]
> В смысле травиться предлогаете?
Если ты посмотришь все книги про паттерны и прочие теории, то заметишь, что про Delphi там вообще ни слова. Там все слова про Java, C++ и .Net
В смысле предлагаю пользоваться теми возможностями инструмента, которые ему присущи, а не желать странного.
В древнем Китае желающим странного отрубали голову. Во избежание.
← →
Kolan © (2007-07-25 22:00) [21]> что про Delphi там вообще ни слова
В книге Фаулера про корп. приложения есть про Delphi мельком, говорит что мол все равно…
> В древнем Китае желающим странного отрубали голову. Во избежание.
Фух, ххорошо что мы в разных городах живём.
> В смысле предлагаю пользоваться теми возможностями инструмента,
> которые ему присущи, а не желать странного.
Желаю правильного :(.
ЗЫ
В итоге я сделал отображнеие в StringGrid и забил… Хорошо хоть другая работа не так связана с базами. Там буду применять прочитаное…
Благодарю за обсуждение.
← →
Игорь Шевченко © (2007-07-26 10:32) [22]Kolan © (25.07.07 22:00) [21]
Собственно, давно известно, что с объектами в сложных системах работать удобнее и код получается более сопровождабельный, так как логику от отображения отделить проще.
DB-Aware controls в Delphi с объектами никак не связаны - это две перпендикулярные линии. Для простых данных из предметной области этого достаточно, для сложных начинается кошмар с размытой по программе логикой.
У меня выбрать наименьшее зло не получилось, может, кому-то повезет.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.044 c