过滤器模式允许开发者使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把他妈连接起来,属于结构型模式。在Java8的典型应用方法是分组操作。
下面我们通过工资的范围,来分组不同的岗位。
- 首先定义岗位接口,以及它的实现类:经理,员工,工人。
//经理
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;
}
}
- 运用
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));
}
}
- 运行结果
manager:
[名字:小明 薪资:17700, 名字:赵飞 薪资:16000]
worker:
[名字:李四 薪资:1200, 名字:赵飞 薪资:1200]
网友评论