Java中过滤器模式有什么用
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,这篇文章主要介绍了Java中过滤器模式有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。实现我们将创建一个 Person 对象、C
千家信息网最后更新 2025年01月24日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安全错误
数据库的锁怎样保障安全
网络安全的感谢
最新服务器管理软件
数据库中的字段能不能更换位置
软件开发素材网
数据库实时镜像技术
梦幻西游转区后没有历史服务器
dapper连接的数据库
如何把网页的数据插入数据库
安徽工业软件开发收费报价表
网络安全溯源怎么做
计算机软件开发相关的税收筹划
戴尔服务器远程账号密码
查找两列满足条件的行数据库
无锡浪潮服务器技术指导
卸载软件需要安装服务器吗
单位网络安全职能
魔兽服务器崩溃
仿古服务器
请经信委授课网络安全
中专学计算机网络技术有前途吗
在银行做软件开发可以上网吗
工具连接hive数据库连接不上
激战2服务器怎么样
apache服务器名
服务器禁用端口
用id加入服务器安全吗
硬盘坏了sql数据库如何恢复
英雄联盟手游有服务器吗
浙江网络技术开发概况
确保数字校园网络安全