美文网首页我们的2019
设计模式之过滤器模式

设计模式之过滤器模式

作者: GitCode8 | 来源:发表于2019-03-11 10:05 被阅读0次

过滤器模式允许开发者使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把他妈连接起来,属于结构型模式。在Java8的典型应用方法是分组操作。
下面我们通过工资的范围,来分组不同的岗位。

  1. 首先定义岗位接口,以及它的实现类:经理,员工,工人。
//经理
public interface Position {
    public List<Person> groupByPosition(List<Person> list);
}
public class Manager implements Position {
    @Override
    public List<Person> groupByPosition(List<Person> list) {

        List<Person> manager=new ArrayList<>();

        for (Person person:list){
            if (person.getSalary()>15000){
                manager.add(person);
            }
        }

        return manager;
    }
}
//员工
public class Employee implements Position {
    @Override
    public List<Person> groupByPosition(List<Person> list) {


        List<Person> employee=new ArrayList<>();

        for (Person person:list){
            if (person.getSalary()>=5000&&person.getSalary()<=1500){
                employee.add(person);
            }
        }

        return  employee;
    }
}
//工人
public class Worker implements Position{
    @Override
    public List<Person> groupByPosition(List<Person> list) {


        List<Person> worker=new ArrayList<>();

        for (Person person:list){
            if (person.getSalary()<5000){
                worker.add(person);
            }
        }

        return worker;
    }
}
  1. 运用
public class Main {

    public static void main(String[] args) {

        List<Person> list = new ArrayList<>();

        list.add(new Person("张三", 13400));
        list.add(new Person("李四", 1200));
        list.add(new Person("小明", 17700));
        list.add(new Person("小黑", 11200));
        list.add(new Person("小白", 8200));
        list.add(new Person("赵飞", 1200));
        list.add(new Person("赵飞", 16000));


        System.out.println("manager:");
        Position manager = new Manager();
        manager.groupByPosition(list);
        System.out.println(manager.groupByPosition(list));

        System.out.println("worker:");
        Position worker = new Worker();
        worker.groupByPosition(list);
        System.out.println(worker.groupByPosition(list));


    }

}
  1. 运行结果
manager:
[名字:小明 薪资:17700, 名字:赵飞 薪资:16000]
worker:
[名字:李四 薪资:1200, 名字:赵飞 薪资:1200]

相关文章

网友评论

    本文标题:设计模式之过滤器模式

    本文链接:https://www.haomeiwen.com/subject/qwxvpqtx.html