Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Использовать или нет объекты спецификаций?


Страницы:   1 2 3 4

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. Так?


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо