Выбор паттерна GoF - PullRequest
       2

Выбор паттерна GoF

2 голосов
/ 22 марта 2012

В настоящее время мы проводим массовое преобразование приложений Access в .NET-интерфейсы. Многие приложения Access имеют отчеты и метод создания RDLC (или Crystal rpt), а форма хоста с заполнением и связыванием набора данных трудоемка.

Итак, я создаю библиотеку классов C #, чтобы помочь, вы даете ей имя отчета, а он делает все остальное. то есть в настоящее время я могу сделать:

   ReportViewer.GetReportViewer("ReportXXX")
      .AddParameter("UserID", "a983157")
      .SetFormSize(new Size(1024, 768))
      .SetFormTitle("My Report")
      .SetFormLocation(FormStartPosition.CenterScreen)
      .Show();

Это работает для встроенного формата RDLC, но я хочу расширить его до Crystal. Но я знаю, что если я просто добавлю ее в одну и ту же библиотеку классов, мне нужно будет распространять сборки Microsoft Reporting и сборки Crystal.

Так что я хотел разделить его на 3, одну библиотеку для общего кода, а затем одну для Microsoft и одну для Crystal. Потребители не будут расширять или добавлять свои собственные, они просто передают мне имя отчета, и я решаю, какой это тип, и создаю соответствующую форму.

Я думаю, что это паттерн Builder, который я хочу, но не уверен, что Bridge также кажется подходящим, но не конструктивным, и я думаю, что - это то, чем я буду заниматься.

Ответы [ 2 ]

0 голосов
/ 03 марта 2013

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

0 голосов
/ 22 марта 2012

Я думаю, что вы действительно хотите Шаблон фабричного дизайна . Общий код будет помещен в базовый класс, и у вас будет два производных класса из базового класса, один для Crystal и один для RDLC. Фабрика будет возвращать соответствующий экземпляр объекта для отчета в зависимости от имени отчета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...