model类;
public class Apple {
private Integer id;
private String color;
private Integer heavy;
public Apple(Integer id, String color, Integer heavy) {
this.id = id;
this.color = color;
this.heavy = heavy;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public Integer getHeavy() {
return heavy;
}
public void setHeavy(Integer heavy) {
this.heavy = heavy;
}
@Override
public String toString() {
return "Apple{" +
"id=" + id +
", color='" + color + '\'' +
", heavy=" + heavy +
'}';
}
}
行为接口:
public class AppleHeavyPredicate implements ApplePredicate{
@Override
public boolean test(Apple apple) {
return apple.getHeavy()>5;
}
}
第一个行为(筛选红色苹果)
public class AppleRedPredicate implements ApplePredicate{
@Override
public boolean test(Apple apple) {
return "red".equals(apple.getColor());
}
}
第二个行为(筛选重量大于5的苹果)
public class AppleHeavyPredicate implements ApplePredicate{
@Override
public boolean test(Apple apple) {
return apple.getHeavy()>5;
}
}
测试:
@Test
public void test2() {
List<Apple> inventory = new ArrayList<>();
for (int i = 0; i < 10; i++) {
inventory.add(new Apple(i, "green", 10 + i));
}
List<Apple> apples = filterApples(inventory, new AppleRedPredicate());
for (Apple apple2 :
apples) {
System.out.println(apple2.toString());
}
}
public static List<Apple> filterApples(List<Apple> inventory,ApplePredicate p){
List<Apple> result = new ArrayList<>();
for (Apple apple:inventory) {
if(p.test(apple)){
result.add(apple);
}
}
return result;
}