设计模式:过滤器模式

这篇博客介绍了过滤器模式的基本思想,即通过不同的业务规则对数据进行过滤。文章以人信息调查为例,创建了AgeFilter和NameFilter两个过滤器,并展示了如何使用Java 8的Stream API简洁地实现过滤器模式,对Person对象列表按姓名和年龄进行过滤。通过这个例子,读者可以更好地理解和应用过滤器模式。

过滤器模式思想就是不同的业务规则对同一个数据进行过滤后得到最终数据。一般适用于对象属性过滤。比如现在做人信息调查,有根据姓名和年龄去过滤信息。那这里就是两个过滤器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());
        });
    }
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值