Java中过滤器模式有什么用
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍了Java中过滤器模式有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。实现我们将创建一个 Person 对象、C
千家信息网最后更新 2026年10月31日Java中过滤器模式有什么用
这篇文章主要介绍了Java中过滤器模式有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
实现
我们将创建一个 Person 对象、Criteria 接口和实现了该接口的实体类,来过滤 Person 对象的列表。CriteriaPatternDemo,我们的演示类使用 Criteria 对象,基于各种标准和它们的结合来过滤 Person 对象的列表。
步骤 1
创建一个类,在该类上应用标准。
Person.javapublic 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; } }步骤 2
为标准(Criteria)创建一个接口。
Criteria.javaimport java.util.List; public interface Criteria { public ListmeetCriteria(Listpersons);}步骤 3
创建实现了 Criteria 接口的实体类。
CriteriaMale.javaimport java.util.ArrayList;import java.util.List; public class CriteriaMale implements Criteria { @Override public ListmeetCriteria(Listpersons) { ListmalePersons = new ArrayList(); for (Person person : persons) { if(person.getGender().equalsIgnoreCase("MALE")){ malePersons.add(person); } } return malePersons; }}CriteriaFemale.javaimport java.util.ArrayList;import java.util.List; public class CriteriaFemale implements Criteria { @Override public ListmeetCriteria(Listpersons) { ListfemalePersons = new ArrayList(); for (Person person : persons) { if(person.getGender().equalsIgnoreCase("FEMALE")){ femalePersons.add(person); } } return femalePersons; }}CriteriaSingle.javaimport java.util.ArrayList;import java.util.List; public class CriteriaSingle implements Criteria { @Override public ListmeetCriteria(Listpersons) { ListsinglePersons = new ArrayList(); for (Person person : persons) { if(person.getMaritalStatus().equalsIgnoreCase("SINGLE")){ singlePersons.add(person); } } return singlePersons; }}AndCriteria.javaimport java.util.List; 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 ListmeetCriteria(Listpersons) { ListfirstCriteriaPersons = criteria.meetCriteria(persons); return otherCriteria.meetCriteria(firstCriteriaPersons); }}OrCriteria.javaimport java.util.List; 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 ListmeetCriteria(Listpersons) { ListfirstCriteriaItems = criteria.meetCriteria(persons); ListotherCriteriaItems = otherCriteria.meetCriteria(persons); for (Person person : otherCriteriaItems) { if(!firstCriteriaItems.contains(person)){ firstCriteriaItems.add(person); } } return firstCriteriaItems; }}步骤4
使用不同的标准(Criteria)和它们的结合来过滤 Person 对象的列表。
CriteriaPatternDemo.javaimport java.util.ArrayList; import java.util.List; public class CriteriaPatternDemo { public static void main(String[] args) { Listpersons = new ArrayList(); persons.add(new Person("Robert","Male", "Single")); persons.add(new Person("John","Male", "Married")); persons.add(new Person("Laura","Female", "Married")); persons.add(new Person("Diana","Female", "Single")); persons.add(new Person("Mike","Male", "Single")); persons.add(new Person("Bobby","Male", "Single")); Criteria male = new CriteriaMale(); Criteria female = new CriteriaFemale(); Criteria single = new CriteriaSingle(); Criteria singleMale = new AndCriteria(single, male); Criteria singleOrFemale = new OrCriteria(single, female); System.out.println("Males: "); printPersons(male.meetCriteria(persons)); System.out.println("\nFemales: "); printPersons(female.meetCriteria(persons)); System.out.println("\nSingle Males: "); printPersons(singleMale.meetCriteria(persons)); System.out.println("\nSingle Or Females: "); printPersons(singleOrFemale.meetCriteria(persons)); } public static void printPersons(Listpersons){ for (Person person : persons) { System.out.println("Person : [ Name : " + person.getName() +", Gender : " + person.getGender() +", Marital Status : " + person.getMaritalStatus() +" ]"); } } }步骤 5
执行程序,输出结果:
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中过滤器模式有什么用"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
对象
步骤
接口
标准
篇文章
模式
过滤器
实体
不同
价值
兴趣
同时
更多
朋友
知识
程序
结果
编带
行业
资讯
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
有格互联网科技
中关村互联网科技集团
互联网科技深圳
科技服务与互联网
融势互联网科技
互联网科技大会
深圳市运趣互联网科技有限公司
新华互联网科技2019
昭通云南众福互联网科技有限公司
互联网还是高科技吗
威龙国际互联网科技公司
朱啸虎曾投资哪些互联网科技企业
互联网金融科技元年
上海同邻互联网科技有限公司规模
广西科技产业互联网是什么
互联网科技新闻
互联网界的黑科技
科技信息时代互联网发展
好易买互联网科技
上海互联网科技园景观
互联网科技卖菜
互联网金融公司科技
亿账通互联网科技
互联网科技公司做什么
来此购互联网科技有限公司
新兴科技互联网创新大赛颁奖典礼
坤平互联网科技
乌鲁木齐新华智原互联网科技学校
中国新注册互联网科技
科技信息时代互联网发展