Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.12.04;
Скачать: [xml.tar.bz2];

Вниз

Помогите с архитектурным решением   Найти похожие ветки 

 
бабба   (2005-11-09 22:45) [0]

Здравствуйте, хочется все сразу делать красиво и элегантно, но такого опыта с ООП проектированием у меня нет.
Есть след. задача:
Есть девайс, у него есть драйвер. Надо с девайсом работать. Действия несложные: режим show only, когда данные просто отображаются на экране (как осциллограф)
режим record, когда данные льются на винт, пару раз в секунду можно отображать на экране
режим playback, когда из открытого файла или только записанного идет показ данных.
Вот и все.
Как это в духе ООП сделать? Не утруждайте себя постами типа "MVC тебе поможет"

Я думаю так:
Есть класс документа, он взаимодейтвует с объектом контроллер и объектом драйвер, имеет в себе объект ДатаФайл.
Есть класс View, он получает данные, копирует их буфер и при надобности перерисовывает себя.
На контроллер завязаны все Action"ы.
Или не так?


 
Игорь Шевченко ©   (2005-11-09 22:54) [1]


> Или не так?


На первый взгляд вроде все так.


> Есть класс документа, он взаимодейтвует с объектом контроллер
> и объектом драйвер, имеет в себе объект ДатаФайл.


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


 
Sandman29 ©   (2005-11-10 09:16) [2]

>Документ, опять же, не взаимодействует, скорее всего, с объектом драйвер, а инкапсулирует его

ИМХО лучше не инкапсулировать, а взаимодействовать (использовать). То есть документ не должен быть драйвером ни в коем случае. Хотя в параметрах конструктора документа вполне может быть экземпляр драйвера.
А вообще очень рекомендую почитать о паттернах, чтобы уменьшить число неясностей.
http://ooad.asf.ru/patterns/viewpattlist.asp?cat=0


 
Игорь Шевченко ©   (2005-11-10 10:32) [3]

Sandman29 ©   (10.11.05 09:16) [2]


> Хотя в параметрах конструктора документа вполне может быть
> экземпляр драйвера.


Это, собственно, и имеется в виду под инкапсуляцией. То есть, документ не должен быть наследником класса TDriver, это очевидно, но агрегировать в сеюя экземпляр драйвера он должен.


 
Sandman29 ©   (2005-11-10 10:43) [4]

Игорь Шевченко ©   (10.11.05 10:32) [3]

Похоже, у нас разные понятия о сути агрегирования. По-моему, агрегированный объект должен создаваться "контейнером", желательно отложенно, в момент первого использования. А в данном случае имеется лишь ссылка на внешний объект, который создается извне и с легкостью может быть заменен на другой.


 
Игорь Шевченко ©   (2005-11-10 10:53) [5]

Sandman29 ©   (10.11.05 10:43) [4]

Это я слово перепутал. Не агрегирование, а композиция, как альтернатива наследованию. Насчет создаваться по требованию - а какой смысл ?


 
Sandman29 ©   (2005-11-10 11:20) [6]

Игорь Шевченко ©   (10.11.05 10:53) [5]
Насчет создаваться по требованию - а какой смысл ?

В данном случае - никакого. Согласен.


 
iZEN_   (2005-11-10 14:08) [7]

Подходит паттерн проектирования Стратегия.
* Стратегия "show only", когда данные просто отображаются на экране (как осциллограф);
* Странтегия "record", когда данные льются на винт, пару раз в секунду можно отображать на экране;
* Стратегия "playback", когда из открытого файла или только записанного идет показ данных.
Можно воспользоваться преимуществами наследования, когда класс стратегии "Playback" наследуется от класса стратегии "Showonly" с добавлением режима перемотки. Класс стратегии "Record" - уже отдельный.



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

Форум: "Потрепаться";
Текущий архив: 2005.12.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.037 c
14-1131757507
TStas
2005-11-12 04:05
2005.12.04
КАк в Ворде нумеровать рисунки автоматически?


1-1131039262
Ins!7t
2005-11-03 20:34
2005.12.04
Ошибка- The compiler could not find the given identifier???


2-1132214384
ASB
2005-11-17 10:59
2005.12.04
ODBC драйвер - ошибки


2-1130822835
flatron84
2005-11-01 08:27
2005.12.04
Асемблер и Delphi


14-1131712043
SPeller
2005-11-11 15:27
2005.12.04
Просто ради смеха





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский