过滤器模式思想就是不同的业务规则对同一个数据进行过滤后得到最终数据。一般适用于对象属性过滤。比如现在做人信息调查,有根据姓名和年龄去过滤信息。那这里就是两个过滤器AgeFilter,Nlter。面向的一个数据就是人的信息Person。但在jdk1.8通过steam新特性可快速实现过滤器模式。只需要理解下过滤器的思想即可。
Person类
public class Person {
private Integer id;
private String name;
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Person(Integer id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
}
测试类
public class FilterTest {
private static List<Person> personList = new ArrayList<>();
static {
Person person = new Person(1,"zs",12);
Person person1 = new Person(2,"ls",23);
Person person2 = new Person(3,"ww",22);
personList.add(person1);
personList.add(person2);
personList.add(person);
}
public static void main(String[] args) {
List<Person> newList = personList.stream().filter(person -> person.getAge()>15).filter(person ->
person.getName().equals("ls")
).collect(Collectors.toList());
newList.forEach(person -> {
System.out.println(person.getId());
});
}
}
这篇博客介绍了过滤器模式的基本思想,即通过不同的业务规则对数据进行过滤。文章以人信息调查为例,创建了AgeFilter和NameFilter两个过滤器,并展示了如何使用Java 8的Stream API简洁地实现过滤器模式,对Person对象列表按姓名和年龄进行过滤。通过这个例子,读者可以更好地理解和应用过滤器模式。
1080

被折叠的 条评论
为什么被折叠?



