Проблема дизайна - PullRequest
       10

Проблема дизайна

0 голосов
/ 05 октября 2009

Что у меня есть?

У меня ниже требования:

  • Поиск в базе данных и возврат объектов TreeNode для построения древовидного представления
  • Поиск в базе данных и возврат общего списка для построения диаграммы.
  • Должна существовать расширяемость для поиска и возврата различных типов объектов
  • База данных огромна, и производительность следует рассматривать с высоким приоритетом

С какой проблемой я сталкиваюсь?

Я пытаюсь сделать дизайн класса для этой проблемы. Здесь метод поиска тот же, и отличается только тип возвращаемого значения. Я запутался, какой шаблон дизайна использовать здесь.

Может ли кто-нибудь помочь мне в этом?

Заранее спасибо!

Update-1

Логика поиска будет такой же, и для этой цели предусмотрены API. API будут принимать параметры поиска и возвращать результаты как DataReader (в C #). Используя читателя, мне нужно создать TreeNode, общий список или любой другой объект, который может появиться в будущем.

Мне нужно спроектировать компонент, который находится на бизнес-уровне, чтобы обслуживать уровень представления. В зависимости от выбора пользователя, результаты поиска будут отображаться с различными элементами управления. Эти элементы управления нуждаются в объектах различного типа для привязки.

Ответы [ 3 ]

1 голос
/ 05 октября 2009

Я действительно не понимаю проблемы. Ваш список требований слишком расплывчат.

Какая у вас база данных? Как вы получаете к нему доступ? Какие данные там? Какую программу вы разрабатываете? В какой части дизайна у вас есть проблемы?


Обновление

Хорошо, я думаю, вам нужно настроить 2 шаблона.

Прежде всего вам потребуется способ получения данных из базы данных в едином формате. Это должно быть сделано с использованием шаблона [ abstract ] Factory . Factory просто предоставит стандартный контейнер (ваш Reader) для извлеченных данных.

Далее вам понадобится что-то для адаптации этих унифицированных данных (а именно, Adapter ). Это будет просто набор функторовоподобных структур, которые смогут преобразовываться из стандартных унифицированных извлеченных данных (из базы данных) в требуемые данные для конкретного компонента.

Фабрика должна оставаться на бизнес-уровне, тогда как адаптеры должны находиться на уровне представления.

0 голосов
/ 05 октября 2009

Я думаю, вам нужно взглянуть на шаблон Factory.

Интерфейс будет запрашивать дерево или список или X Creator с фабрики, а затем создатель выполнит поиск и интерпретирует DataReader для создания выбранного типа данных.

0 голосов
/ 05 октября 2009

Ну, вы назвали общую функциональность, которую хотели бы реализовать. Однако вы не упомянули потребителей этой функциональности. И сценарии использования являются движущей силой дизайна. Таким образом, чтобы приступить к проектированию, вам нужно указать сценарии. Например, нет смысла абстрагировать алгоритмы поиска за шаблоном «Стратегия», если он не будет использоваться полиморфно.

...