2013-02-25 60 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