通过调用private缩短了多个公共方法

时间:2016-06-14 16:18:36

标签: java

我有多个检查折扣的公共方法,我希望不多次重复代码,并且只需要公共方法可以访问的私有方法中的大部分代码。这是代码。这可能吗?

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;
     }
  }

}

1 个答案:

答案 0 :(得分: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;
   }
 }
}