赞
踩
过滤器模式(Filter Pattern)或标准模式(Criteria Pattern)是一种设计模式,这种模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。这种类型的设计模式属于结构型模式,它结合多个标准来获得单一标准。
代码设计如下图
需要说明下的就是性别用了一个枚举类,以方便在过滤时,可以把过滤的性别作为参数传入过滤器。
考虑到过滤器的接口方法入参只有一个(为了抽象程度高,所以不扩展更多入参)
所以把额外的属性(比如过滤的年龄,性别)作为构造方法的入参传入,而不作为过滤方法入参。
涉及到的过滤方式有:
按年龄过滤、按性别过滤、年龄和性别的交集、年龄和性别的并集
public interface PeopleFilter {
List<People> doPeopleFilter(List<People> peopleList);
}
public enum SexEnum {
MALE(1, "男"),
FAMALE(2, "女");
int code;
String msg;
SexEnum(int code, String msg){
this.code = code;
this.msg = msg;
}
}
@Data
public class People {
private int age;
private String name;
private SexEnum sexEnum;
}
public class SexFilter implements PeopleFilter { private SexEnum sexEnum; public SexFilter(SexEnum sexEnum){ // 在构造方法时指定性别 this.sexEnum = sexEnum; } @Override public List<People> doPeopleFilter(List<People> peopleList) { List<People> result = new ArrayList<>(); for (People people : peopleList) { if (this.sexEnum.equals(people.getSexEnum())) { result.add(people); }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。