![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Использовать или нет объекты спецификаций?
Kolan © (2007-09-18 08:50:00)Здравствуйте,
Если вы читали лармана, то наерно знаете про объекты спицификаций(specifications).
Допустим у меня есть объект Агде должен быть список других объектов Б. По сути те «другие» объекты Бявляются спецификациями.
Вопрос как организовать связь?
Я сделал так, что в объект А входит список Б, то есть не использовал спецификации. Сделал я это потому, что решил что с таким объектом удобнее работать. Например я передал его во вью и его отобразили. А если бы я использовал спецификации и связал бы его с помощью каккого-либо ID, например, то вью пришлось бы запрашивать спецификации для вывода объекта.
Плохо ли я поступил?
Что в этом полохого?
Как поступили бы вы?
Бакук (2007-09-22 10:17:00) [41]
> Можно мног чего делать. Domain нуже, имхо, в первую очередь
> для «сближения» программы с предметной областью. Согласиь
> понятнее когда перед тобой класс:TCar = class FWheel: array[0Ե]
> of TWheel; FSteeringWheel: TSteeringWheel;end;Чем когда
> ты видишь такое:Query.FieldByName('SteeringWheel').
Ну удобство заключается в том, что я могу обратиться как [b]Car.Wheel.Id[/b]? Однако сомневаюсь, что [b]Query.FieldByName()[/b] это непонятно
> Имхо проблемма Delphi + MVC в части View. Если для отображения
> не нужны таблицы, то я ввобще обхожусь без DBAware контролов.
> Делаю DAL Domain View слои и контроллеры.Если без DB Aware
> не обойтись, то все компоненты в DataModule скрываю за фасадом.
> Но опыта у меня мало всего 3 программы, так сделал.
Сильно будет нагло, если попрошу дать посмотреть какие-то обрыки, наброски? Для самообучения?
> Необходимостью
И все-таки, необходимостью чего?
Kolan (2007-09-22 08:47:00) [42]> Не все же материализуете? Выборочно?
Да
> Каким критерием вы пользуетесь при выборке?
Необходимостью
Какой плюс?
Удобство, понятность для других программистов и для себя через месяц в первую очередь.
Kolan (2007-09-22 08:44:00) [43]> У кого есть лишнее время (я, например, страшно люблю красоты
> объектно-ориентированные) тот тратит это время.
От вас не ожидал Все красоты ООП для экономиивремени.
> Объясните мне, каким образом вы применяте MVC в Делфи?
Имхо проблемма Delphi + MVC в части View. Если для отображения не нужны таблицы, то я ввобще обхожусь без DBAware контролов. Делаю DAL Domain View слои и контроллеры.
Если без DB Aware не обойтись, то все компоненты в DataModule скрываю за фасадом. Но опыта у меня мало всего 3 программы, так сделал.
> По сути в обычные контролы можно вывести так же поля Датасета
> без создания объекта
Можно мног чего делать. Domain нуже, имхо, в первую очередь для «сближения» программы с предметной областью.
Согласиь понятнее когда перед тобой класс:
TCar = class
FWheel: array[0Ե] of TWheel;
FSteeringWheel: TSteeringWheel;
end;
Чем когда ты видишь такое:
Query.FieldByName('SteeringWheel').
Бакук (2007-09-22 08:32:00) [44]
> А иногда и грид отображает ClientDataSet, в котором записи
> формируются из списка объектов.
Зачем делать лишнее действие? Сфетчить данные, заполнить ClientDataset и вывести в грид?
> Но, например, в ряде случаев, я предпочитаю материализовать
> объект по ключу из выбранной записи в том же гриде, и работать
> уже с объектом, отображая его данные безотносительно db-
> aware контролов или выполняя прочие действия. А иногда и
> грид отображает ClientDataSet, в котором записи формируются
> из списка объектов.
Не все же материализуете? Выборочно? Каким критерием вы пользуетесь при выборке? Какой плюс?
> отображая его данные безотносительно db-aware контролов
> или выполняя прочие действия
По сути в обычные контролы можно вывести так же поля Датасета без создания объекта
Суслик (2007-09-22 00:27:00) [45]Проще надо быть.
У меня приятель сейчас работает в конторе, где проекты содержат модули от Unit1 до Unit99 (может больше). Контролы называются соответственно - Label1 и пр. Смотрел я этот код. Я может и ламо полное, но он меня не ввел в ужас - код, который делает дело, делает (насколько я знаю) неплохо. А то, что писан он, не то чтобы без MVC и прочих красот, так вообще без элементарной аккуратности, так это ничего - работает же. У кого есть лишнее время (я, например, страшно люблю красоты объектно-ориентированные) тот тратит это время. У кого нет, делает дело и не задумывается о красотах.
Игорь Шевченко (2007-09-21 12:40:00) [46]Бакук © (21.09.07 07:33) [20]
Никаким образом не применяем. В Delphi есть механизм db-aware controls, яд которого проникает в мозг каждого разработчика и заставляет его игнорировать MVC.
Но, например, в ряде случаев, я предпочитаю материализовать объект по ключу из выбранной записи в том же гриде, и работать уже с объектом, отображая его данные безотносительно db-aware контролов или выполняя прочие действия. А иногда и грид отображает ClientDataSet, в котором записи формируются из списка объектов.
Бакук (2007-09-21 07:33:00) [47]Объясните мне, каким образом вы применяте MVC в Делфи?
Недавно стал читать про «паттерны, фаулеры и MVC в частности» и понял, что на PHP я так и пишу. Разделяю вывод и обращение к БД. Каким образом это делать в Delphi?
Datamodule (Dataset + Datasource) получение данных
Form (Grid с ссылкой на Datasource или DB Controls) отображение информации
Это неверно? Зачем нагромождать проект? Ради того, чтобы было?
Суслик (2007-09-20 13:16:00) [48]
> [18] Игорь Шевченко © (19.09.07 16:22)
> Баловство, конечно. Русский программист будет писать так,
> чтобы не было мучительно больно за бесцельно прожитые годы.
> А что будет после него - а комуэто нафиг надо, пусть теперь
> там поворочаются.
вот, видишь, и ты так думаешь.
Игорь Шевченко (2007-09-19 16:22:00) [49]
> я три года болел этими доменами, моделями предметной области,
> паттернами, ларманами, фаулерами и пр. баловство все это.
>
> современная СУБД + правильная БД. вот где правда, брат
Баловство, конечно. Русский программист будет писать так, чтобы не было мучительно больно за бесцельно прожитые годы. А что будет после него - а комуэто нафиг надо, пусть теперь там поворочаются.
Kolan (2007-09-19 12:11:00) [50]> справшиваей модель.
Да вроде логично. Надо бы нарисовать д. Взаимодействия, еще вопросы задам
Суслик (2007-09-19 11:34:00) [51]
> я три года болел этими доменами, моделями предметной области,
> паттернами, ларманами, фаулерами и пр. баловство все это.
> современная СУБД + правильная БД. вот где правда, брат.
(себя же процитирую :))
несмотря на то, что я считаю, что это баловство - пройденный путь все равно очень полезен. знать это очень неплохо.
Суслик (2007-09-19 11:26:00) [52]
> [10] Kolan © (18.09.07 15:44)
> А что вы на [7] не отвечаете?
ты проста такие умные вопросы ставишь, что и не понять.
я три года болел этими доменами, моделями предметной области, паттернами, ларманами, фаулерами и пр. баловство все это.
современная СУБД + правильная БД. вот где правда, брат.
и вообще - не видел ни одного удачного применения MVC в ЧИСТОМ виде. все равно V и C объединяют с большинстве случаев.
> Типа дай описания продукта с ID 124. Так?
справшиваей модель. при чем здесь controller.
evvcom (2007-09-19 11:18:00) [53]
> а вы о чем?
Ну явно не об этом :)
Игорь Шевченко (2007-09-19 10:48:00) [54]
> Дык вот, это описание можно поместить в «товар», но тогда
> если нет ни одного экземпляра, то потеряется и описание(спецификация),
> поэтому он советует сделать два объекта «товар» и «Спецификация
> товара» и связать их по ID(Integer).
Сделай, раз советует. Ни к чему людей обижать.
Kolan (2007-09-19 09:56:00) [55]> Я не знаю как в твоей загадочной СУБД
Причем тут СУБД. У меня её нет. У меня есть Domain(Объекты уровня предметной области.)
> View это представление, запрос.
Не о том говорим, я говорю о View из архитектурного паттерна Model-View-Controller, а вы о чем?
evvcom (2007-09-19 09:10:00) [56]
> Вот произошло изменение, вью получил конкретный «пакет моркови»
> и ему надо отобразить данные
Ой, сколько неправильных слов. Я не знаю как в твоей загадочной СУБД, о которой ты молчишь как партизан, но во всех, с которыми я когда-либо сталкивался, view ничего не получает и тем более не отображает! View - это представление, запрос. Как запрос может что-то отобразить? Запрос выбирает из таблиц данные. А уведомления, имхо, в твоем случае должно получить клиентское приложение, после этого выполнить запрос из View, ну и отобразить результат. И что сложного в запросе с получением так называемой тобой спецификации? Ты про join слышал?
Kolan (2007-09-18 15:44:00) [57]А что вы на [7] не отвечаете?
Kolan (2007-09-18 09:43:00) [58]> это как?
Каждый объект домена реализует обозревателя и субъекта из паттерна observer. И вью тоже. При изменении модель рассылает уведомления
clickmaker (2007-09-18 09:41:00) [59]
> активная модель, которая уведомляет вью сама
это как?
Kolan (2007-09-18 09:35:00) [60]> Ты про базы что ли?
Да нет я о Domain.
Поэтому, правильно Ларман советует.
Знаю что правильно, но как тогда рисовать это все во вью?
У меня активная модель, которая уведомляет вью сама. Вот произошло изменение, вью получил конкретный «пакет моркови» и ему надо отобразить данные из этого экземпляра и + описание. Значит получив объект он полезет спрашивать (кого?) контроллер что-ли? Типа дай описания продукта с ID 124. Так?