2014-01-29 3 views
0

DB에서 정보를 가져 오기 위해 2 개의 별도 DAO를 호출하는 Bean 클래스가 있습니다. 이클래스 변수 대 로컬 변수

class InfoRetriever { 

public String retrieveInfo(int arg1, int arg2){ 
     String info = retrieveFirstInfo(arg1 , arg2); 

     if(info.equals("xyz")){ 
      retrieveSecondInfo(arg1, arg2); 
     } 
} 

private String retrieveFirstInfo(int arg1,String arg2){ 
    // call DB to get info 
} 

private String retrieveSecondInfo (int arg1, String arg2) { 
    // call DB to get info 
} 

} 

내 질문에 내가 회원 요소로 ARG1과 ARG2를 이동하는 선택의 여지가와 retrieveFirstInfo 및 retrieveSecondInfo를 호출하기 전에 그들을 설정할 수있는 구조를합니다. 정보를 멤버 변수로 만들 수도 있습니다.

변수를 메소드와 클래스 변수에 대해 로컬로 유지할 수있는 경우 고려해야 할 트레이드 오프는 무엇입니까?

+2

트레이드 오프 이상으로, 이러한 인수가 실제로 클래스의 구성원이되어야하는지 고려해야합니다. 그들은 거기에 속해 있습니까? 그들은 물건의 상태를 유지하기로되어 있습니까? 그렇다면, 분명히 필드를 만듭니다. –

+0

@rohit - 내 질문이 무엇인지. 이제는 다소 서비스/관리자 클래스입니다. 이것들은 엔티티/실세계 객체가 아니기 때문에 추상화를 식별하기가 어렵습니다. –

+0

그렇다면 그대로 두겠습니다. 인수로 전달할 때 멤버 변수로 적합하지 않으면 잘못된 것은 없습니다. 또한, 당신의'retrieveInfo' 메쏘드는 호출자의 권한을 받아 들일 것입니다. 구문을 확인하십시오. '()'이 없습니다. –

답변

1

arg1arg2의 값은 당신에게 같은 info, 다음, 올바른 방법으로 제공하는 경우 :

  • info 멤버 변수
  • 은 ARG1과 ARG2와 인수를 취하는 생성자를 선언 확인을
+0

감사합니다. Amit. 앞으로 필요한 경우 getter를 사용하여이 중간 정보를 가져올 수도 있으므로 멤버 요소로 정보를 만들 예정입니다. 내 경우에는 생성자를 사용하여 정보를 빌드하는 것을 발견하지는 않지만. –

+0

이 대답을 선택한 대답으로 표시하는 방법 : D –