Java 如何将特定于区域的逻辑从正常流中分离出来?

Java 如何将特定于区域的逻辑从正常流中分离出来?,java,java-8,object-oriented-analysis,Java,Java 8,Object Oriented Analysis,我有一个类名ProductValidation,在这个类中有一个名为validate的eis函数,它迭代产品列表。在检查区域的函数中。此外,还有其他具有区域特定检查的功能。我想将此区域特定的检查移动到其他类。如何即兴编写下面的代码 class Product{ int id, long price; String region; Product(int id, long price, String region){ this.id = id;

我有一个类名ProductValidation,在这个类中有一个名为validate的eis函数,它迭代产品列表。在检查区域的函数中。此外,还有其他具有区域特定检查的功能。我想将此区域特定的检查移动到其他类。如何即兴编写下面的代码

class Product{
    int id,
    long price;
    String region;

    Product(int id, long price, String region){
        this.id = id;
        this.price = price;
        this.region = region;
   }

   // getters for id,price and locId
}

Class ProductValidation{
   public static validate(List<Product> list, long[] prices){
     for(int i = 0; i < list.size();i++){
          if(list.get(i).getRegion().equals("ASIA"){ 
            long[i] = 0;
          }
      }
}


long[] price = {40, 90, 40};

List<Product> list = new ArrayList();
list.add(new Product(1,100, "ASIA"));
list.add(new Product(1,100, "AUS));
list.add(new Product(1,100, "EUROPE"));

 // call ProductValidation.validate(list, price)
类产品{
int id,
多头价格;
弦区;
产品(整数id、长价格、字符串区域){
this.id=id;
这个价格=价格;
这个区域=区域;
}
//id、price和locId的getter
}
类产品验证{
公共静态验证(列表,长[]价格){
对于(int i=0;i
您可以将该测试表示为
双重指示

BiPredicate<Product, String> productRegionSearch = (p,s) -> p.getRegion().equals(s);

存储在该名称数组中的
price
与存储在
Product
同名字段中的
price
之间的关系是什么?为什么要将价格设置为零;这意味着什么?这看起来非常像一个。
if(productRegionSearch.test(list.get(i), "ASIA"))...