2016-06-14 2 views
-3

할인을 확인하는 public 메서드가 여러 개 있습니다. 코드를 여러 번 반복하지 않고 공개 메서드에서 액세스 할 수있는 private 메서드로 코드를 대량으로 사용하려고합니다. 여기에 코드가 있습니다. 이것이 가능한가?private 메서드를 호출하여 여러 개의 공용 메서드를 짧게 만들었습니다.

public static boolean isE1(WebOrder order) 
    { 
    if(order.getPromos().stream().filter(i -> E1.contains(i.toUpperCase())).findFirst().isPresent()) 
    { 
    return true; 
    } 
    else 
    { 
    List<Discount> discounts = new LinkedList<>(); 

    order.getItems().forEach(i -> discounts.addAll(i.getDiscounts())); 

    if(!discounts.isEmpty()) 
    { 
     return discounts.stream() 
      .filter(i -> E1.contains(i.getCode().toUpperCase())) 
      .findFirst() 
      .isPresent(); 
    } 
    else 
    { 
     return false; 
    } 
    } 
} 
    public static boolean isE2(WebOrder order) 
    { 
    if(order.getPromos().stream().filter(i -> E2.contains(i.toUpperCase())).findFirst().isPresent()) 
    { 
    return true; 
    } 
    else 
    { 
    List<Discount> discounts = new LinkedList<>(); 

    order.getItems().forEach(i -> discounts.addAll(i.getDiscounts())); 

    if(!discounts.isEmpty()) 
    { 
     return discounts.stream() 
       .filter(i -> E2.contains(i.getCode().toUpperCase())) 
       .findFirst() 
       .isPresent(); 
    } 
    else 
    { 
     return false; 
    } 
    } 

}

+2

예? 너 뭐라고 묻는거야? – pvg

+1

물론 가능합니다. 한 번 시도해보고 문제가 생기면 특정 문제에 관해 질문을 게시하십시오. –

+0

E1과 E2 사이에는 아무런 차이가 없습니다. 왜 여러 가지 방법으로 시작해야합니까? – micker

답변

1

예는 수 :

그냥 개인 정적과 방법을 시작합니다.

public static boolean isE2(WebOrder order) 
{ 
    yourMethod(order); 
} 

private static yourMethod(WebOrder order){ 
    //your code 

    if(order.getPromos().stream().filter(i -> E1.contains(i.toUpperCase())).findFirst().isPresent()) 
{ 
    return true; 
} 
else 
{ 
    List<Discount> discounts = new LinkedList<>(); 

order.getItems().forEach(i -> discounts.addAll(i.getDiscounts())); 

if(!discounts.isEmpty()) 
{ 
    return discounts.stream() 
     .filter(i -> E1.contains(i.getCode().toUpperCase())) 
     .findFirst() 
     .isPresent(); 
} 
else 
{ 
    return false; 
    } 
} 
} 
+0

어떻게 세 가지 할인 모두를 개인 정적으로 사용할 수 있습니까? – Norcal

+0

@Norcal 메서드에 공통 부분 만 추가하십시오! 그런 다음 게시 한 두 가지 방법으로 값을 수정하십시오. –

+0

괜찮음 그래서 내가 가지고 있다고 할 수있다 private static final Set E1 = Collections.unmodifiableSet (새로운 HashSet <> (Arrays.asList ("E1-Associate"))))); 및 E2 할인 코드를 지배하는 또 다른 ... 개인 정적 최종 세트 PARENT_DISCOUNT 말할 수와 그 형식을 사용하는 것이 가능할 것 = 에 = E1과 E2 문자열? – Norcal

관련 문제