Java--设计模式-3-过滤器模式

简介: 过滤器模式(Filter Pattern)或者叫标准模式(Criteria Pattern),就是在全部对象中过滤出我们所定义的标准对应的对象,也属于结构型模式。

过滤器模式(Filter Pattern)或者叫标准模式(Criteria Pattern),就是在全部对象中过滤出我们所定义的标准对应的对象,也属于结构型模式。

实现元素:

对象(组成集合)

接口(标准)

实现(不同的标准实现)


一、建立一个对象

packagecom.xing.design.filter;
/***员工类*@authorxing*@createTime*/publicclassEmployee {
/***名字*/privateStringname;
/***性别*/privateStringgender;
/***机构*/privateStringdept;
/***工资*/privateintsalary;
publicStringgetName() {
returnname;
  }
publicvoidsetName(Stringname) {
this.name=name;
  }
publicStringgetGender() {
returngender;
  }
publicvoidsetGender(Stringgender) {
this.gender=gender;
  }
publicStringgetDept() {
returndept;
  }
publicvoidsetDept(Stringdept) {
this.dept=dept;
  }
publicintgetSalary() {
returnsalary;
  }
publicvoidsetSalary(intsalary) {
this.salary=salary;
  }
/***构造*@paramname名称*@paramdept机构*@paramsal工资*/publicEmployee(Stringname, Stringgender, Stringdept, intsal) {
this.name=name;
this.gender=gender;
this.dept=dept;
this.salary=sal;
  }
publicStringtoString(){
return ("Employee :[ Name : "+name+", dept : "+dept+", salary :"+salary+" ]");
  }   
}


二、编写一个标准接口,用来建立过滤规则

packagecom.xing.design.filter;
importjava.util.List;
/***标准*@authorxing*@createTime*/publicinterfaceCriteria {
/***过滤*@paramlist*@return*/List<Employee>fiterGril(List<Employee>list);
}


三、实现上述接口,编写两个不同的过滤规则

1.工资高的肯定好

packagecom.xing.design.filter;
importjava.util.ArrayList;
importjava.util.List;
/***通过工资过滤筛选*@authorxing*@createTime*/publicclassSalaCriteriaimplementsCriteria{
@OverridepublicList<Employee>fiterGril(List<Employee>list) {
List<Employee>newList=newArrayList<>();
for(Employeee : list) {
if(e.getSalary() >100) {
newList.add(e);
      }
    }
returnnewList;
  }
}


2.只要真实性别是女的

packagecom.xing.design.filter;
importjava.util.ArrayList;
importjava.util.List;
/***通过性别过滤筛选*@authorxing*@createTime*/publicclassGenderCriteriaimplementsCriteria{
@OverridepublicList<Employee>fiterGril(List<Employee>list) {
List<Employee>newList=newArrayList<>();
for(Employeee : list) {
if("女".equals(e.getGender())) {
newList.add(e);
      }
    }
returnnewList;
  }
}

       这样,过滤规则就写好了,我们来使用一下。

四、测试

packagecom.xing.design.filter;
importjava.util.ArrayList;
importjava.util.List;
/***过滤器模式FilterPattern*@authorxing*@createTime*/publicclassFilterPatternDemo {
publicstaticvoidmain(String[] args) {
//一群公主List<Employee>list=newArrayList<>();
list.add(newEmployee("小野", "男", "怡红院", 500));
list.add(newEmployee("小红", "女", "怡红院", 500));
list.add(newEmployee("老鸨", "女", "怡红院", 500));
list.add(newEmployee("加藤鹰", "男", "KTV", 200));
list.add(newEmployee("波多野结衣", "女", "KTV", 200));
list.add(newEmployee("苍井空", "女", "怡红院", 1000));
//工资高肯定就好CriteriasalaCriteria=newSalaCriteria();
System.out.println("工资大于100的:");
System.out.println(salaCriteria.fiterGril(list));
//剔除人妖CriteriagenderCriteria=newGenderCriteria();
System.out.println("性别真实是女的:");
System.out.println(genderCriteria.fiterGril(list));
  }
}

结果:

image.png

       我们用工资和性别,过滤出了不同的对象集合,挑吧。


总结:

       根据某些规则来过滤出我们需要的东西。


END

目录
相关文章
|
11天前
|
设计模式 Java 数据库
小谈设计模式(2)—简单工厂模式
小谈设计模式(2)—简单工厂模式
|
1天前
|
设计模式
设计模式(一)简单工厂模式
设计模式(一)简单工厂模式
4 0
|
5天前
|
设计模式 算法 Java
Java中的设计模式及其应用
【4月更文挑战第18天】本文介绍了Java设计模式的重要性及分类,包括创建型、结构型和行为型模式。创建型模式如单例、工厂方法用于对象创建;结构型模式如适配器、组合关注对象组合;行为型模式如策略、观察者关注对象交互。文中还举例说明了单例模式在配置管理器中的应用,工厂方法在图形编辑器中的使用,以及策略模式在电商折扣计算中的实践。设计模式能提升代码可读性、可维护性和可扩展性,是Java开发者的必备知识。
|
8天前
|
设计模式 算法 Java
小谈设计模式(30)—Java设计模式总结
小谈设计模式(30)—Java设计模式总结
|
9天前
|
设计模式 存储 Java
Java设计模式:解释一下单例模式(Singleton Pattern)。
`Singleton Pattern`是Java中的创建型设计模式,确保类只有一个实例并提供全局访问点。它通过私有化构造函数,用静态方法返回唯一的实例。类内静态变量存储此实例,对外仅通过静态方法访问。
14 1
|
11天前
|
存储 Java
模式匹配魔法:Java 21中switch语句的巨大进化
模式匹配魔法:Java 21中switch语句的巨大进化
12 0
|
11天前
|
设计模式 Java
小谈设计模式(9)—工厂方法模式
小谈设计模式(9)—工厂方法模式
|
13天前
|
设计模式 算法 Java
23种设计模式,模板方法模式的概念优缺点以及JAVA代码举例
【4月更文挑战第10天】模板方法模式是一种行为设计模式,它定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些特定步骤。
14 0