2013-02-25 57 views
2

我创建了一个名为“DownloadManagerWrapper类,它会调用基于运行时间参数调用。我可以按照下面的代码,使之清洁和结构性任何设计模式。这设计模式,我可以去,如果可能需要您的意见和样本设计模式的代码和简单的解释如果可能的,因为我是新来的设计模式哪种设计模式可供遵循,使代码结构

public class DownloadManagerWrapper { 

    public static void main(String[] args) { 
    String downloadId = args[0]; 
    String bankId =args[1]; 
    String serviceId =args[2]; 
    readInterfaceConfig(serviceId,bankId,downloadId); 
    } 

    public static void readInterfaceConfig(String intfCode,String bankId,String downloadId) { 

    Connection conn = CRMConnection.getConnection(); 

    String statusOfDownload; 
    DownloadManager dwlManager = new DownloadManager(); 

    ResultSet rs=null; 

    if(downloadId.equals("A")) 
    { 
    if(intfCode.equals("-1")) //all download 
    { 
     String query = "select INTF_CODE from CRMUSER.TABLE1 where bank_id ="+"'"+bankId+"'"+"order by INTF_CODE"; 
     System.out.println("query>"+query); 
     try 
     { 
     Statement st = conn.createStatement(); 
     rs = st.executeQuery(query); 
       while(rs.next()) 
      { 
        String intfCodeFromDB = rs.getString("INTF_CODE"); 
        statusOfDownload = new DownloadManager().downloadDataFromCore(intfCodeFromDB,bankId,downloadId); 
      } 
     } 
     catch(SQLException e) 
     { 
     e.printStackTrace(); 
     } 
     finally 
     { 
     try { 
      rs.close(); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
     } 
    } 
    else //specific download 
    { 
      statusOfDownload = dwlManager.downloadDataFromCore(intfCode,bankId,downloadId); 
    } 
    } 
    else if(downloadId.equals("I")) 
    { 
      if(intfCode.equals("-1")) //all download 
     { 
      String query = "select INTF_CODE from CRMUSER.TABLE1 where bank_id ="+"'"+bankId+"'"+"order by INTF_CODE"; 
      System.out.println("query>"+query); 
      try 
      { 
      Statement st = conn.createStatement(); 
      rs = st.executeQuery(query); 
        while(rs.next()) 
       { 
         String intfCodeFromDB = rs.getString("INTF_CODE"); 
         statusOfDownload = new DownloadManager().downloadDataFromCore(intfCodeFromDB,bankId,downloadId); 
       } 
      } 
      catch(SQLException e) 
      { 
      e.printStackTrace(); 
      } 
      finally 
      { 
      try { 
       rs.close(); 
      } catch (SQLException e) { 
       e.printStackTrace(); 
      } 
      } 
     } 
     else //specific download 
     { 
       statusOfDownload = dwlManager.downloadDataFromCore(intfCode,bankId,downloadId); 
     } 
    } 
    } 
} 
+0

什么是SQL注入的好地方!顺便说,读清洁代码,这是比我所能劝... – ppeterka 2013-02-25 12:46:19

+0

如何避免我的查询SQL注入的方式吗?谢谢你的评论。 – user2057006 2013-02-25 12:47:43

回答

0

一些指针:?

+0

我知道DAO模式。我可以将所有与数据库相关的代码放入DAO层。还有其他的模式可以遵循吗? – user2057006 2013-02-25 12:49:21

+0

是的。与策略模式更新 – 2013-02-25 12:51:18

+0

是I M探索战略格局。会在某个时候回到这个论坛。 – user2057006 2013-02-25 13:51:39

0

如前所述,策略模式可能是一个很好的路要走。我注意到你的课只有一种方法。这可能是实施Command Pattern的好机会。

命令模式允许你从需要它的一类分离功能。所以如果你发现自己运行这个功能很多,这可以真正帮助避免不需要的代码。

+0

是I M探索命令模式也是如此。会在某个时候回到这个论坛。 – user2057006 2013-02-25 13:51:56

+0

感谢您的回答。 – user2057006 2013-02-25 16:02:56