选择GoF模式

时间:2012-03-22 16:31:45

标签: c# design-patterns

我们目前正在将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个,一个用于公共代码的lib,然后一个用于Microsoft,一个用于Crystal。消费者不会扩展或添加他们自己的,他们只是给我一个报告名称,我找出它是什么类型,并建立适当的表格。

我认为它是我想要的一个Builder模式,但不确定,Bridge似乎也合适,但它不是一个结构模型,我认为就是我将要做的。

2 个答案:

答案 0 :(得分:0)

我认为你其实想要一个Factory design pattern。公共代码将放在基类中,您将从基类中获得两个派生类,一个用于Crystal,另一个用于RDLC。 Factory将根据报告名称返回适当的报告对象实例。

答案 1 :(得分:0)

只是给出一个提示,你需要明白没有规则说你必须坚持一个单一的模式。实际上,单独使用实际意义上的单一设计模式。