Java中过滤器模式有什么用
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍了Java中过滤器模式有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。实现我们将创建一个 Person 对象、C
千家信息网最后更新 2025年11月07日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安全错误
数据库的锁怎样保障安全
山东网络安全检查
网络安全项目业务培训
科技互联网大会直播
网络技术基础与计算思维期末
贵州网络技术的学校排名
思科网络技术学院介绍
计算机网络技术聚飞专班
网络安全服务怎么选择
网络技术应用发展规划
网络技术行业培训计划
网络安全 教育局
移动网络技术支持有哪些
frp免费服务器安全吗
海南慧波网络技术有限公司
数据库技术中菜单设计
服务器安全体系结构
华为软件开发视频
数据库怎么查重复的数据库
光明大陆最新的服务器
施耐德网络安全问题
服务器安全的系统设计
青浦区数字led大屏服务器
如何保护服务器的设备
苹果8怎么移除游戏数据库
无线网络技术导论内容
e7管理系统显示消息服务器错误
垫片服务器循环播放设置
系统集成资质能做软件开发吗
保障重要基础网络安全
全球同服游戏服务器实现