2010-08-30 3 views
1

Я должен разработать простое веб-приложение для создания отчетов. У меня есть один «контракт» для таблицы, и я должен возвращать очень простые агрегированные значения: количество документов, созданных во временном диапазоне, среднее количество страниц для документов и т. Д. Таблица заполняется пакетным приложением, у пользователей будут роли, которые позволят им видеть только часть отчетов (если они могут быть вызваны так).Применимые шаблоны проектирования

Моя цель:

  1. разработать класс, который генерирует так называемые отчеты, открыто для будущего расширения (добавление новых методов для создания новых отчетов для различных ролей должны быть легко)
  2. разъединить Интернет графический интерфейс от доступа к базе данных

Я оцениваю различные шаблоны: декоратор, посетитель, ... но, будучи данными о возврате, так просто, я не могу оценить, какие применяются или даже если его случай использовать. Кроме того, я должен сделать это менее 5 дней. Это можно сделать, если я создаю так называемый «умный gui», но, как сказано в пункте 1, я не хочу получать проблемы при добавлении новых ролей или метода.


Благодарим вас за ответы. Извините, я понимаю, что я не предоставил слишком много информации. Я живу в мире Дилберта. на данный момент у меня есть следующая информация: db будет оракулом (конкретный db еще не существует), поэтому нет EF, может быть, linqtodataset (но я новичок в linq). О новых функциях приложения, благодаря незабываемым впечатлениям, единственное, чего я хочу, - это не обязать распространять изменения во всем приложении, даже если это просто. это причины, по которым я разработал шаблоны (обратите внимание, что я сказал «если это так» в моем вопросе). Я ПОЛУЧАЮ его, а затем реорганизую его, если это необходимо, по предложению ladislav mrnka, но я по-прежнему ценю любое предложение о том, как сохранить открытое расширение класса сбора данных

+3

Просто не пытайтесь добавить многие шаблоны. Overengineering не помогает для такого маленького приложения. Просто используйте MVC и Linq-to-SQL или Entity Framework. Это должно сделать это, учитывая закономерности. –

+2

Что заставляет вас думать, что вам нужно набить x количество шаблонов в ваш код? –

+0

Я бы порекомендовал вам найти более подробную информацию о виде «будущего расширения», который наиболее вероятен. Исходя из этого, вы можете выбрать шаблон, который позволит вам это сделать. «Добавление новых методов для создания новых отчетов - это слишком общий» imho, чтобы действительно было полезно. Yves выше, используя EF/LNQ2SQL, следует позаботиться о развязывании вашего доступа к БД ... – InSane

ответ

1

KISS - держите его простым и глупым. У вас есть пять дней. Создайте рабочее приложение, и если у вас есть время реорганизовать его на некоторое лучшее решение.

+0

Где я выхожу KISS означает «Kit It Simple, Stupid» ^^ – marcgg

0

Дорога к хорошему коду не вымощена шаблоны проектирования.

Хороший код - это код, который можно читать, ремонтировать, надежный, совместимый и надежный.

Не поймите меня неправильно: образцы дизайна - отличная вещь, потому что они помогают классифицировать и, таким образом, преподавать, опыт, накопленный более ранними поколениями программистов. Каждый образец дизайна однажды решил проблему таким образом, что был не только новаторским и творческим, но и хорошим. Коррелярий не, что шаблон дизайна обязательно является хорошим кодом при применении к любой другой проблеме.

Хороший код требует опыта и понимания. Это включает опыт с шаблонами проектирования и понимание их применимости, а также их недостатки и подводные камни.

При этом моя рекомендация в вашем конкретном случае - узнать о рекомендуемой практике в отношении веб-интерфейсов, доступа к базе данных и т. Д. Большинство программистов на C# пишут веб-приложения в ASP.NET; как правило, используют LINQ-to-Entities или LINQ-to-SQL для доступа к базе данных; и использовать Windows Forms или WPF для графического интерфейса рабочего стола. Каждый из них может выполнять или не выполнять требования вашего конкретного проекта. Только вы можете сказать.

0

Как насчет использования шаблона стратегии для извлечения данных? И используйте интерфейсы, такие как следующие, чтобы держать его расширяемым в любое время.

  • IReportFilter: Отчет фильтра/критерии, установленные
  • IReportParams: Получить параметры отчета
  • IReportData: Получает данные отчета в наборе результатов
  • IReportFormat: Отчет о форматировании
  • IReportRender: ОКАЗЫВАЕТ отчет

Просто вслух.

+0

Мне нравится ваша идея, на данный момент это слишком сложно, но я учтем, если проект будет расти – 2010-08-31 10:23:56

Смежные вопросы