是否存在数据结构或设计模式或代码结构以避免多个if语句?

时间:2015-06-11 18:16:05

标签: asp.net .net design-patterns refactoring reportviewer

我有一个使用reportviewer的网络[表单]应用。在后面的代码中,我的代码如下所示:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    If Not Page.IsPostBack Then

        Dim u As New UriTypeConverter

        Dim vSDate, vEDate As Date
        vSDate = Session("StartDate")
        vEDate = Session("EndDate")

        If Session("ReportName") = "Report1" Then
            Dim reportparameters(1) As ReportParameter
            reportparameters(0) = New ReportParameter("StartDate", vSDate)
            reportparameters(1) = New ReportParameter("EndDate", vEDate)
            ReportViewer1.ServerReport.ReportPath = "/SSRS01/Report1"
            ReportViewer1.ServerReport.SetParameters(reportparameters)
        End If

        If Session("ReportName") = "Report2" Then
            Dim reportparameters(1) As ReportParameter
            reportparameters(0) = New ReportParameter("StartDate", vSDate)
            reportparameters(1) = New ReportParameter("EndDate", vEDate)
            reportparameters(2) = New ReportParameter("Product", Session("ProductName"))
            ReportViewer1.ServerReport.ReportPath = "/SSRS01/Report2"
            ReportViewer1.ServerReport.SetParameters(reportparameters)
        End If

大约有12个if语句,有些语句的参数数量不同于其他语句。因此,与必须编写具有不同参数的更多if语句相反。我想知道是否有一个结构,技术,模式可以让我绕过写作我创建的每个新报告的语句。而且我并不关心所需要的东西。数据库,新库,学习5种新的GoF模式。随你。只有要求/限制是[显然]这是一个.NET应用程序。

1 个答案:

答案 0 :(得分:1)

最好的办法是用策略模式替换多个If或long switch语句。如何找到here

的好解释

你将在这篇关于stackoverflow的讨论中找到另一个很好的例子 - 它在Java上,但是逻辑很清晰,可以用任何.Net语言移植 Converting many 'if else' statements to a cleaner approach