2017-08-21 7 views
0

方法私はメンバーや教授のリストを取得する方法を簡単に上記のコードを記述する2.コントローラ内で同じフローを持つメソッドを結合する。

@RequestMapping(value="/getMember") 
public @ResponseBody List<Object> getMember(HttpServletRequest request){ 
    HttpSession session = request.getSession(); 
    HashMap user = (HashMap)session.getAttribute("USER_INFO"); 

    Map<String, Object> param = new HashMap<String, Object>(); 
    param.put("phone", (String)user.get("PHONE"); 

    ReportManager manager = new ReportManager(); 

    List<Object> list = manager.getMember(param); 
} 

1.

@RequestMapping(value="/getProfessor") 
public @ResponseBody List<Object> getMember(HttpServletRequest request){ 
    HttpSession session = request.getSession(); 
    HashMap user = (HashMap)session.getAttribute("USER_INFO"); 

    Map<String, Object> param = new HashMap<String, Object>(); 
    param.put("phone", (String)user.get("PHONE"); 

    ReportManager manager = new ReportManager(); 

    List<Object> list = manager.getProfessor(param); 
} 

方法。 2つのメソッドは、URLと一番下のメソッドを除いて、まったく同じコードフローを持ちます。ご存じのように、OOPの中核原理の1つは「繰り返し問題を組み合わせる」ことです。ですから、これらのメソッドを1つのメソッドに結合したいということです。

答えて

1
public Map<String, Object> getParams(HttpServletRequest request){ 
    HttpSession session = request.getSession(); 
    HashMap user = (HashMap)session.getAttribute("USER_INFO"); 

    Map<String, Object> param = new HashMap<String, Object>(); 
    param.put("phone", (String)user.get("PHONE"); 
} 

@RequestMapping(value="/getProfessor") 
public @ResponseBody List<Object> getMember(HttpServletRequest request){ 

    ReportManager manager = new ReportManager(); 

    List<Object> list = manager.getProfessor(this.getParams(request)); 
} 

@RequestMapping(value="/getProfessor") 
public @ResponseBody List<Object> getMember(HttpServletRequest request){ 

    ReportManager manager = new ReportManager(); 

    List<Object> list = manager.getProfessor(this.getParams(request)); 
} 
1

URLを/getUserのような一般的なURLに変更してください。

PROFESSOR/MEMBERのような追加のTYPEパラメータを要請してください。 TYPEに応じて、コントローラメソッドで2つの異なるメソッドを照会することができます。

1

DRYコーディングの原則に従って、同じコードを複製することはお勧めできません。 何らかの種類のクエリパラメータで単一のRequestMappingを使用するか、OR 共通コードを別のメソッドに移動し、2つのメソッドから呼び出すことができます。

関連する問題