Java实现(08)——过滤器模式(Filter Pattern)
来源:互联网 发布:德州扑克 技巧 知乎 编辑:程序博客网 时间:2024/05/22 06:57
过滤器模式可以帮助开发者根据一些条件来选择对象,也可以是这些条件的组合。本例创建一个Person类,和Criteria接口,以及具体的实现。
public class Person { private String name; private String gender; private String maritalStatus; public Person(String name, String gender, String maritalStatus) { this.name = name; this.gender = gender; this.maritalStatus = maritalStatus; } public String getName() { return name; } public String getGender() { return gender; } public String getMaritalStatus() { return maritalStatus; }}
import java.util.List;/** * Created by wang on 16-12-17. */public interface Criteria { public List<Person> meetCriteria(List<Person> persons);}
import java.util.ArrayList;import java.util.List;/** * Created by wang on 16-12-17. */public class CriteriaMale implements Criteria{ @Override public List<Person> meetCriteria(List<Person> persons) { List<Person> malePersons = new ArrayList<Person>(); for (Person person : persons) { if (person.getGender().equalsIgnoreCase("MALE")) { malePersons.add(person); } } return malePersons; }}
import java.util.ArrayList;import java.util.List;/** * Created by wang on 16-12-17. */public class CriteriaFemale implements Criteria{ @Override public List<Person> meetCriteria(List<Person> persons) { List<Person> femalePersons = new ArrayList<Person>(); for (Person person : persons) { if (person.getGender().equalsIgnoreCase("FEMALE")) { femalePersons.add(person); } } return femalePersons; }}
import java.util.ArrayList;import java.util.List;/** * Created by wang on 16-12-17. */public class CriteriaSingle implements Criteria { @Override public List<Person> meetCriteria(List<Person> persons) { List<Person> singlePersons = new ArrayList<Person>(); for (Person person : persons) { if (person.getMaritalStatus().equalsIgnoreCase("SINGLE")) { singlePersons.add(person); } } return singlePersons; }}
import java.util.List;/** * Created by wang on 16-12-17. */public class AndCriteria implements Criteria { private Criteria criteria; private Criteria otherCriteria; public AndCriteria(Criteria criteria, Criteria otherCriteria) { this.criteria = criteria; this.otherCriteria = otherCriteria; } @Override public List<Person> meetCriteria(List<Person> persons) { List<Person> firstCriteriaPersons = criteria.meetCriteria(persons); return otherCriteria.meetCriteria(firstCriteriaPersons); }}
import java.util.List;/** * Created by wang on 16-12-17. */public class OrCriteria implements Criteria { private Criteria criteria; private Criteria otherCriteria; public OrCriteria(Criteria criteria, Criteria otherCriteria) { this.criteria = criteria; this.otherCriteria = otherCriteria; } @Override public List<Person> meetCriteria(List<Person> persons) { List<Person> firstCriterialItems = criteria.meetCriteria(persons); List<Person> otherCriterialItems = otherCriteria.meetCriteria(persons); for (Person person : otherCriterialItems) { if (!firstCriterialItems.contains(person)) { firstCriterialItems.add(person); } } return firstCriterialItems; }}
输出:
Males:
Person : [ Name : Robert, Gender : Male, Marital Status : Single ]
Person : [ Name : John, Gender : Male, Marital Status : Married ]
Person : [ Name : Mike, Gender : Male, Marital Status : Single ]
Person : [ Name : Bobby, Gender : Male, Marital Status : Single ]
Females:
Person : [ Name : Laura, Gender : Female, Marital Status : Married ]
Person : [ Name : Diana, Gender : Female, Marital Status : Single ]
Single Males:
Person : [ Name : Robert, Gender : Male, Marital Status : Single ]
Person : [ Name : Mike, Gender : Male, Marital Status : Single ]
Person : [ Name : Bobby, Gender : Male, Marital Status : Single ]
Single or Females:
Person : [ Name : Robert, Gender : Male, Marital Status : Single ]
Person : [ Name : Diana, Gender : Female, Marital Status : Single ]
Person : [ Name : Mike, Gender : Male, Marital Status : Single ]
Person : [ Name : Bobby, Gender : Male, Marital Status : Single ]
Person : [ Name : Laura, Gender : Female, Marital Status : Married ]
- Java实现(08)——过滤器模式(Filter Pattern)
- Java设计模式——过滤器模式(Filter Pattern)
- Java Filter Pattern(过滤器模式)
- 过滤器模式-Filter Pattern
- 过滤器模式(Filter Pattern)
- 设计模式学习—拦截过滤器模式(Intercepting Filter Design Pattern)
- 设计模式【过滤器模式Filter Pattern】
- 【设计模式】过滤器模式(Filter Pattern)
- Java Intercepting Filter Pattern(拦截过滤器)
- 【设计模式】拦截过滤器模式(Intercepting Filter Pattern)
- java 设计模式之过滤器模式(Filter)
- Java Web——Filter过滤器
- Java Web开发——Filter过滤器
- JAVA积累——Filter过滤器
- MOQL—过滤器(Filter)
- servlet过滤器—filter
- Java 利用过滤器Filter 实现登录过滤
- Java实现(01)——工厂模式(Factory Pattern)
- 使用Hibernate框架的demo--打印数据库信
- Socket编程 ——I/O复用(时间请求)
- C语言CGI实现文件上传
- 让你的「微信小程序」运行在Chrome浏览器上
- Docker搭建gitlab服务器让GitLab安装部署更简
- Java实现(08)——过滤器模式(Filter Pattern)
- 键盘方法论: 在键盘前面,你就是钢琴师!
- 基于yeoman定制的交互式命令行脚手架
- 从All-In-One到SOA——技术及架构的演进过
- 掌握css3布局
- 日志大了,怎么办?用我的日志切割脚本
- HttpSession实现购物车功
- z【11-1-2】栈数组模式实现
- 京东用户注意啦:快点改密码吧